我正在编写一个主要由ajax驱动的web应用程序,我正在研究如何保护用户免受CSRF攻击。我计划运行应用程序的页面,用户在HTTPS模式下登录以完成其工作。
在HTTPS上运行页面是否可以防御CSRF攻击?
发布于 2011-12-04 04:26:04
不,在HTTPS上运行页面并不能保护它免受CSRF的攻击。浏览器和服务器之间的通信是加密的,这一事实与CSRF无关。
我建议阅读preventing CSRF上的OWASP指南。
发布于 2011-12-04 04:53:06
一个通用的金科玉律是:
永远不要相信传入的客户端请求是合法的。始终保持怀疑,并假设请求可能是恶意伪造的。
除了提到的OWASP文章之外,还有一些具体的规则:
http://msdn.microsoft.com/en-us/library/ms954638.aspx
发布于 2020-10-24 00:57:16
我试着解释一下:
·HTTPS阻止同一网络中的人获取您的会话密钥/id。假设他们获取了您的会话标识密钥/id,那么如果需要,他们可以伪造您的IP,并将他们想要的所有POST请求发送回服务器。使用HTTPS,所有HTTP正文(整个"HTML")都是加密的。因此,没有会话密钥被猜测。
·在CSRF中发生的情况是,用户点击一个链接,这也会创建一个到另一个服务器的请求并与之通信,比如使用用户的会话,但不在同一网络上。意味着它不能监听服务器回复给用户的内容。如果攻击者知道回复,并且可以与之交流,就好了。没问题。用户账户上没有钱了。但是,如果服务器向与会话关联的IP发送随机令牌,则攻击者无法在不同的网络上猜到它!
https://stackoverflow.com/questions/8370723
复制相似问题