0

因此,我一直听到并读到,如果要将任何用户输入输出回 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" />

任何帮助是极大的赞赏。

4

1 回答 1

1

是的,您需要通过htmlspecialchars.

否则你有两个主要问题。

  1. 第三方可以链接(或使用 JS 提交隐藏表单(因为您正在使用$_POST他们必须使用此方法))到您的站点,以发送他们喜欢(包括"><script...)作为访问其攻击站点的用户的任何数据。
  2. 如果用户"在他们的数据中输入 a (因为它是拼写错误,或者因为他们的数据确实包含一个"字符),当您将其显示给他们时它会中断。
于 2012-07-16T09:51:08.617 回答