在我正在开发的 PHP 项目上,我想实现一个反 XSRF 机制。我正在生成一个随机令牌,并将其存储在我的会话$_SESSION['token']
中。当我提交表单时,我将会话令牌包含在隐藏字段中并验证是否transmitted token == stored token
。
我的问题是,如果我将此令牌存储在Cookie中会对安全性产生什么影响?
我认为这两种解决方案在XSS
的情况下都是可利用的,而且我无法看到哪个存储最适合该令牌。
谢谢你的帮助。
答案 0 :(得分:1)
如果您按照正常程序生成令牌(类似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