在我正在做的一个PHP项目中,我想实现一个反XSRF机制。我正在生成一个随机令牌并将其存储在我的会话中$_SESSION['token']
。当我提交表单时,我将会话令牌包含在隐藏字段中并验证transmitted token == stored token
.
我的问题是,如果我将此令牌存储在 cookie 中会产生什么安全影响?
我认为这两种解决方案都可以利用,XSS
例如,我无法看到哪种存储最适合令牌。
谢谢你的帮助。
如果您按照正常程序生成令牌(类似于sha1( $username.$private_per_session_passphrase)
),我认为这没有太大区别,您可以将令牌放入 cookie 或会话变量中,并且您应该清除 CSRF 漏洞。
要考虑的主要事情是,在您将收到的令牌与您的令牌(cookie/会话)匹配之前,POST 无法成功。换句话说,页面请求不应该是自包含的。
这些可能很有趣:
并且这篇论文描述了 CSRF + XSS 攻击:
https ://www.htbridge.com/publications/xss_csrf_practical_exploitation_of_post_authentication_vulnerabilities_in_web_applications.html