2

我正在尝试用 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'];
?>

现在,每当我刷新此会话页面时,它都会生成新令牌,我不希望令牌在每次刷新或新页面视图时都被更改。那么有人可以帮我解决这个问题吗?

4

1 回答 1

1

移动session_start(); 到您的脚本顶部将为您解决此问题。:)

于 2013-12-06T14:53:36.273 回答