我已经创建了一个PHP表单,在提交后会转到另一个PHP页面。这将验证所有输入,删除反斜杠等。
我的问题是:如果我在PHP脚本处理任何信息之前创建一个检查,通过检查一个名为'uniquecode'的POST变量,该变量将与表单一起发布,这会使我的表单更安全?
我正在使用所有的帖子变量。我的脚本变得非常先进,我希望它尽可能安全,但也尽可能简单。
答案 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处理的所有信息实际上来自您自己的网站,而不是其他人的信息。
希望这可以帮助你。