HTTPS是否可以抵御CSRF攻击?

时间:2011-12-03 20:23:15

标签: asp.net security csrf

我正在编写一个主要由ajax驱动的Web应用程序,我正在研究如何保护用户免受CSRF攻击。我打算运行用户登录的应用程序页面,以便在HTTPS模式下完成工作。

在HTTPS上运行页面是否可以防止CSRF攻击?

5 个答案:

答案 0 :(得分:19)

不,在HTTPS上运行页面并不能保护它不受CSRF的影响。浏览器和服务器之间的通信加密这一事实与CSRF无关。

我建议您在preventing CSRF上阅读OWASP指南。

答案 1 :(得分:2)

一般的黄金法则是:

永远不要相信传入的客户端请求是合法的。始终保持怀疑,并认为该请求可能被恶意伪造。

除了上述OWASP文章之外,几乎没有具体规则:

  1. 如果您的数据需要身份验证/授权,请避免服务器上的通用接口,例如CRUD接口。易于编码,难以授权来自客户的特定请求。相反,提供一个SOA风格的接口,其中包含专用于特定用例的显式方法,您可以直接控制请求及其参数。

    http://msdn.microsoft.com/en-us/library/ms954638.aspx

  2. 即使框架提供了对请求有效性的某些控制(ASP.NET viewstate),再次检查用户是否有权传递传入参数集。

答案 2 :(得分:0)

答案 3 :(得分:0)

我会尝试解释:

•HTTPS阻止来自同一网络的某人获取您的会话KEY / ID。假设他们获得了您的会话标识密钥/ ID,然后可以根据需要伪造您的IP,并将所有想要的POST请求发送回服务器。 使用HTTPS加密所有HTTP正文(整个“ HTML”)。因此,不会猜测任何会话密钥。

•CSRF中发生的事情是用户单击链接,这还会创建到另一台服务器的请求并与之通信,例如使用用户的会话但不在同一网络上。意味着它无法收听服务器回复给用户的内容。如果攻击者知道答复并可以传达答复,请瞧。没问题。用户帐户上没有钱。但是,如果服务器向与该会话关联的IP发送随机令牌,那么攻击者将无法在其他网络上猜测它!

答案 4 :(得分:0)

https不能保护您的应用免受xss攻击。您需要csrf令牌,该令牌应该经过(1)加密(2)一段时间后过期(3)基于页面和时间的CSRF令牌