我是PHP的新手,如果这是一个业余的错误,请道歉。我正在尝试为基本联系表单添加简单的CSRF检查。
我按照本网页上的8个跨网站请求伪造的说明进行操作:http://www.phpfreaks.com/tutorial/php-security
它在刷新html页面时传递安全性,但第一次没有。它第一次提供的错误是:“Undefined index:token”。所以我想这不是第一次不会将令牌写入Session?
非常感谢您提供的任何帮助。谢谢。
PHP设置在HTML页面的HEAD中调用的令牌,包括:
<?php
function generateFormToken() {
session_start();
$_SESSION['token'] = uniqid(md5(microtime()), true);
}
?>
表格(简化):
<?php generateFormToken(); ?>
<form method="post" action="php/formsubmit.php">
<fieldset>
<!-- fields -->
<input type="hidden" name="token" value="<?php echo $_SESSION['token'] ?>">
</fieldset>
<input type="submit" value="Submit" >
</form>
formsubmit.php:
<?php
session_start();
$isToken = $_SESSION['token'];
if ($_POST['token'] !== $isToken) {
die('Security failed');
} else {
... run validation etc.