1 回答
TA贡献1802条经验 获得超6个赞
当您刷新页面时,该函数created_csrf_token会再次触发,从而更改 CSRF 令牌。
你可以确定范围。例如
<?php
function csrf_token() {
return bin2hex(random_bytes(35));
}
function create_csrf_token() {
if (isset($_SESSION['csrf_token'])) {
return $_SESSION['csrf_token'];
}
$token = csrf_token();
$_SESSION['csrf_token'] = $token;
$_SESSION['csrf_token_time'] = time();
return $token;
}
function csrf_token_tag() {
$token = create_csrf_token();
return '<input type="hidden" name="csrf_token" value="' . $token . '">';
}
$csrf_token = csrf_token_tag();
?>
<form action="" method="post">
...
<?= $csrf_token; ?>
</form>
<form action="" method="post">
...
<?= $csrf_token; ?>
</form>
将 isset 添加到 中将create_csrf_token检查是否设置了 CSRF 令牌,并返回现有令牌,而不是创建新令牌。
不过,您可能想添加一些逻辑,以便在大约 5 分钟后创建一个新的 CSRF 令牌。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报