Php 使用cookie代替会话来防止跨站点请求伪造

Php 使用cookie代替会话来防止跨站点请求伪造,php,session,cookies,Php,Session,Cookies,我需要为现有站点添加CSRF保护,我指的是如何预防CSRF的指南 在链接中,建议我们使用$\u会话作为存储令牌的一种方式。我想知道使用$\u COOKIE是否同样安全。在$\会话上使用$\ COOKIE有什么缺点吗 编辑:如果使用$\u COOKIE而不是$\u会话符合PCI标准,有什么想法吗?在绝大多数情况下,PHP会话标识符也通过COOKIE(会话COOKIE)传输 如果这对你的站点也是正确的——这几乎是肯定的——那么想想攻击者如何访问你的cookies(例如通过XSS)会发生什么:他们不需

我需要为现有站点添加CSRF保护,我指的是如何预防CSRF的指南

在链接中,建议我们使用$\u会话作为存储令牌的一种方式。我想知道使用$\u COOKIE是否同样安全。在$\会话上使用$\ COOKIE有什么缺点吗


编辑:如果使用$\u COOKIE而不是$\u会话符合PCI标准,有什么想法吗?

在绝大多数情况下,PHP会话标识符也通过COOKIE(会话COOKIE)传输

如果这对你的站点也是正确的——这几乎是肯定的——那么想想攻击者如何访问你的cookies(例如通过XSS)会发生什么:他们不需要CSRF,因为他们可以简单地劫持会话并进入前门。结论:如果将CSRF令牌存储在cookie中,则不存在额外的安全风险


使用额外的CSRF cookie的一个小缺点是,它会将传入的HTTP流量增加一点点,但这实际上只是一个理论上的差异。

我总是将会话cookie(加密)存储在数据库中,与之相比,我相信这会增强安全性。。。对于你的问题,我无意中删除了我的评论。。。再次:您需要确保用户的浏览器已启用cookies。否则,他将无法提交任何表格。而且,cookie加密是一个很好的关键字。否则,您可能可以插入CSRF cookie并操纵您的CSRF检查。我的站点设置是这样的,使用会话不是一个选项。我们在分布式系统上设置了该站点。@GauravSharma:如果您不使用会话,那么CSRF如何应用?实际上,每一个用户请求(对你来说)看起来都像是来自一个全新的用户。因此,唯一的用户类型是“匿名”。我们使用客户端cookie来维护用户日志in@GauravSharma:因此,如果有人看到你的cookie,他们可以劫持你用户的会话。正如我在上面所写的,在这种情况下,他们为什么要用CSRF令牌呢?我不确定我是否理解。你是说因为我只使用cookies来存储任何会话数据,所以我不应该担心CSRF,也不应该添加任何检查来阻止它?