我需要为现有网站添加CSRF保护,我指的是http://phpmaster.com/preventing-cross-site-request-forgeries/作为如何防止CSRF的指南。
在链接中,建议我们使用$ _SESSION作为存储令牌的方式。我想知道使用$ _COOKIE是否同样安全。使用$ _COOKIE而不是$ _SESSION有什么缺点吗?
编辑:如果使用$ _COOKIE代替$ _SESSION,是否符合PCI标准?
答案 0 :(得分:0)
在绝大多数情况下,PHP会话标识符也通过cookie传输(会话cookie)。
如果您的网站也是如此 - 几乎可以肯定的是 - 那么考虑一下如果攻击者获得对您的cookie的访问权限(例如通过XSS)会发生什么:他们不需要CSRF,因为他们可以只是劫持会话并通过前门进入。结论:如果将CSRF令牌存储在cookie中,则不存在额外的安全风险。
使用额外的CSRF cookie的一个小缺点是,它会将传入的HTTP流量量增加一点点,但这实际上只是理论上的差异。