繁体   English   中英

HTTPS 是否可以防止 CSRF 攻击?

[英]Does HTTPS protect against CSRF attacks?

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

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

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

我建议阅读有关防止 CSRF的 OWASP 指南。

我会试着解释:

• HTTPS 可防止同一网络上的其他人获取您的会话密钥/ID。 假设他们获得了您的会话标识密钥/ID,然后他们可以在需要时伪造您的 IP,并将他们想要的所有 POST 请求发送回服务器。 使用 HTTPS,所有 HTTP 正文(整个“HTML”)都是加密的。 因此没有猜测会话密钥。

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

一般的黄金法则是:

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

除了提到的 OWASP 文章之外,很少有具体规则:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM