如果出现错误,输出表单输入
问题描述:
因此,我总是听到并读到,如果要输出回html,则需要清理任何用户输入。我想知道的是,如果出现错误,是否需要清理输出的任何输出?如果出现错误,输出表单输入
例如,在我的表单错误处理中,我已将它重新显示,并显示错误消息并告诉用户出了什么问题,而且还将输入作为表单的值输出,因此它们没有重新输入,他们可以看到他们出错的地方。我的问题是我需要使用htmlspecialchars()来清理用户的输入时,其输出作为表单字段的值?
这是我的一个输入字段看起来像现在。
<label for="email">E-mail Address: <?php if($btnPressed) { checkInput($_POST['email'], true, true); } // Check the validity of the input ?></label>
<input type="text" name="email" id="email" value="<?php if($btnPressed) { echo $_POST['email']; } // Output the user's input if an error occurred ?>" maxlength="50" />
这是我认为我应该做的。
<label for="email">E-mail Address: <?php if($btnPressed) { checkInput($_POST['email'], true, true); } // Check the validity of the input ?></label>
<input type="text" name="email" id="email" value="<?php if($btnPressed) { echo htmlspecialchars($_POST['email']); } // Output the user's input if an error occurred ?>" maxlength="50" />
任何帮助,非常感谢。
答
是的,你需要通过htmlspecialchars
运行数据。
否则你有两个主要问题。
- 第三方可以链接(或提交一个隐藏的形式与JS(因为你正在使用
$_POST
他们将不得不使用这种方法))到您的网站发送的所有数据,他们喜欢(包括"><script...
)作为用户谁拜访了他们的袭击地点 - 如果用户在他们的数据中输入了
"
(或者是因为它是拼写错误,或者是因为他们的数据确实包含"
字符),那么当您将其显示回给他们时,它将会中断。
我不认为你明白什么是XSS攻击。 – 2012-07-16 09:51:51
@Laurent - 我明白什么是XSS攻击。请仔细阅读我的答案,它描述了攻击的工作原理。 – Quentin 2012-07-16 09:53:53
@Laurent - 爱丽丝访问马洛里的网站。马洛里有一个指向鲍勃的网站的形式。 Mallory的表单预先加载了一个隐藏的输入,其中包含'>