我正在尝试用 PHP 构建一个受 CSRF 保护的 Web 应用程序。我试图在会话中保留一个令牌供用户使用一次,以保护他们的安全。现在的问题是,每当我刷新页面或访问另一个页面时,我的令牌都会更改。我不希望它发生。我想设置单个会话令牌,以便用户可以访问网站而不会出现任何令牌不匹配的问题。我的会话代码是
<?php
function rand_csrf_string($length = 7) {
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
if(!isset($_SESSION['CSRF_TOKEN'])){
session_start();
$_SESSION['CSRF_TOKEN'] = rand_csrf_string() ;
}
echo $_SESSION['CSRF_TOKEN'];
?>
现在,每当我刷新此会话页面时,它都会生成新令牌,我不希望令牌在每次刷新或新页面视图时都被更改。那么有人可以帮我解决这个问题吗?