在PHP处理之前保护HTML表单。

时间:2012-01-07 21:31:55

标签: php forms security

我已经创建了一个PHP表单,在提交后会转到另一个PHP页面。这将验证所有输入,删除反斜杠等。

我的问题是:如果我在PHP脚本处理任何信息之前创建一个检查,通过检查一个名为'uniquecode'的POST变量,该变量将与表单一起发布,这会使我的表单更安全?

我正在使用所有的帖子变量。我的脚本变得非常先进,我希望它尽可能安全,但也尽可能简单。

2 个答案:

答案 0 :(得分:1)

我知道你要做什么,我会用一个会话:

加载页面并显示表单后:

<?php

session_start();
$_SESSION['form-key'] = md5(rand(1,100000));

?>

<form method="post" action="script.php">
  <input type="hidden" name="key" value="<?php echo $_SESSION['form-key']; ?>">
</form>

提交后

<?php
// Check this matches
session_start();
$_SESSION['form-key']==$_POST['key'];
?>

警告如果有人在新标签页中打开同一页面,则会重置$ _SESSION ['form-key'],因此原始标签页无效


更新这只会阻止DIRECT发布到表单,脚本仍然可以解析令牌并将其与提交一起发回(@zerkms)

答案 1 :(得分:0)

在HTML中添加其他验证字段不会保护表单,这是因为用户可以在呈现HTML时操纵HTML。

如果您想保护自己的表单免受垃圾邮件侵扰,我建议您使用reCaptcha: http://www.google.com/recaptcha 如果您需要帮助,Stack Overflow上的人员将帮助您集成此功能。

您还可以搜索有关“跨站点脚本”(XSS)的信息以获取安全提示。以下是维基百科的文章:http://en.wikipedia.org/wiki/Cross-site_scripting

防范XSS非常重要,以确保PHP处理的所有信息实际上来自您自己的网站,而不是其他人的信息。

希望这可以帮助你。