在防止 CSRF 攻击时,我应该采取以下步骤:
但是当攻击者使用 iframe 时,它也会发送会话 cookie,导致相同的 CSRF 令牌,iframe 中的表单也将包含令牌。这样攻击者就可以访问了。
我在这里缺少什么?
在过去的几天里,它一直在我的脑海中运行,但我读了一些关于如何使PHP会话更安全的文章.几乎所有这些文章都说你需要在会话中使用额外的盐来保存useragent.像这样的东西:
$fingerprint = md5('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT']);
Run Code Online (Sandbox Code Playgroud)
盐会使攻击者更难以劫持或任何会话.但为什么每次检查时都加盐:
md5('SECRET-SALT'.$_SERVER['HTTP_USER_AGENT']) == $_SESSION [ 'fingerprint' ]
Run Code Online (Sandbox Code Playgroud)
因此,为什么盐会使它更安全,因为攻击者仍然只需要使用者(相对来说是一小组不同的使用者)和sessionid?
可能是我忽略的小东西,但无法弄明白,让我疯狂哈哈
谢谢!