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


Outputting form input if there was an error

所以我一直听说,如果要将任何用户输入输出回html,就需要对其进行净化。我想知道的是,如果出现错误,我是否需要对输出的任何输入进行消毒?

例如,在我的表单错误处理中,我有它,这样页面就会重新显示,错误消息会显示并告诉用户出了什么问题,但也会将他们的输入输出为表单的值,这样他们就不必重新键入它,他们就可以看到哪里出了问题。我的问题是,当用户的输出为表单字段的值时,我是否需要使用htmlspecialchar()来净化用户的输入?

以下是我的一个输入字段现在的样子。

<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. 如果用户在其数据中输入"(因为这是一个打字错误,或者因为他们的数据确实包含"字符),当您将其显示给他们时,它将中断