所以我总是听到并且读到如果要将其输出回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" />
非常感谢任何帮助。
答案 0 :(得分:1)
是的,您需要通过htmlspecialchars
运行数据。
否则你有两个主要问题。
$_POST
他们必须使用此方法))到您的网站发送他们喜欢的任何数据(包括"><script...
)作为访问其攻击站点的用户。"
(因为它是拼写错误或因为他们的数据确实包含"
字符),当您将其显示回来时它会中断。