我有下面的代码应该防止形式欺骗。令牌用于匹配,并确保提交的表单从该网页..PHP形式欺骗代码
if (isset($_POST['Submit'])) {
if (!isset($_POST['token']) || $_POST['token'] != $_SESSION['token']) {
// error, form spoofing, return to users' page or do something else
echo '<script>',
'alert("Form spoofing error!! Please Try again later")',
'</script>';
} else {
//Continue with submission
}
}
错误显示出来的每次我提交表单,需要显示时,才会有安全风险。
谢谢。
编辑:下面的代码在页面的开始时加入:
$_SESSION['token'] = md5(time());
添加隐藏字段与提交后在会议开始时创建的令牌相匹配:
<input name="token" id="token" value="<?php echo md5(time()); ?>" type="hidden">
PHP欺骗错误出现在每个表单提交之后,不允许我提交表单。
何时产生了$ _SESSION ['token']'?在比较旧版本之前是否有可能在页面加载时生成新的令牌? – DCoder 2013-05-11 16:55:30
echo'$ _POST ['token']'和'$ _SESSION ['token']'看看它们有什么价值。 – 2013-05-11 16:55:33
太早了,没有足够的咖啡让我看看它是什么。肯定会尝试Siamak建议的调试,并且我还建议您使用!==(身份而不是平等)来加强它。 – 2013-05-11 17:07:47