发布于:https://codeutopia.net/blog/2008/10/16/how-to-csrf-protect-all-your-forms/
我正在尝试并且未能将代码添加到formtoemailpro.php https://formtoemail.com/developer_pricing.php
我将密钥生成器添加到表单页面:
//Generate a key, print a form:
$key = sha1(microtime());
$_SESSION['csrf'] = $key;
隐藏的领域:
<input type="hidden" name="csrf" value="<?php echo $key; ?>" />
但是我无法将以下内容添加到formtoemailpro.php并让它工作。我把上半部分放在表格的顶部,把'}'放在底部,然后加上'if(!isset'exssion以及表格处理部分的其他类似元素,我就失败了。< / p>
if($_SERVER['REQUEST_METHOD'] == 'POST')
//Here we parse the form
if(!isset($_SESSION['csrf']) || $_SESSION['csrf'] !== $_POST['csrf'])
throw new RuntimeException('CSRF attack');
//Do the rest of the processing here
}
对不起我很抱歉,请有人帮助我吗?
谢谢。
答案 0 :(得分:1)
如果我低估了你的问题,这就是你需要做的事情:
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//Here we parse the form
}
if(!isset($_SESSION['csrf']) || $_SESSION['csrf'] !== $_POST['csrf']){
throw new RuntimeException('CSRF attack');
//Do the rest of the processing here
}
确保在代码块上放置“{”,“}”。
此外,请确保在输出之前调用$_SESSION['csrf'] = $key;
。 (回声,印刷等......)。请查看this Q&amp; A关于会话。