如果出现错误,输出表单输入

问题描述:

因此,我总是听到并读到,如果要输出回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运行数据。

否则你有两个主要问题。

  1. 第三方可以链接(或提交一个隐藏的形式与JS(因为你正在使用$_POST他们将不得不使用这种方法))到您的网站发送的所有数据,他们喜欢(包括"><script...)作为用户谁拜访了他们的袭击地点
  2. 如果用户在他们的数据中输入了"(或者是因为它是拼写错误,或者是因为他们的数据确实包含"字符),那么当您将其显示回给他们时,它将会中断。
+0

我不认为你明白什么是XSS攻击。 – 2012-07-16 09:51:51

+0

@Laurent - 我明白什么是XSS攻击。请仔细阅读我的答案,它描述了攻击的工作原理。 – Quentin 2012-07-16 09:53:53

+0

@Laurent - 爱丽丝访问马洛里的网站。马洛里有一个指向鲍勃的网站的形式。 Mallory的表单预先加载了一个隐藏的输入,其中包含'>