【问题标题】:Does HTTPS protect against CSRF attacks?HTTPS 是否可以防止 CSRF 攻击?
【发布时间】:2020-10-24 03:20:43
【问题描述】:

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

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

【问题讨论】:

标签: asp.net security csrf


【解决方案1】:

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

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

【讨论】:

  • 您对保护 ajax 事务有什么建议?表单提交似乎有据可查,但 ajax 则少得多。
  • @frenchie - 适用于表单提交的几乎所有内容都适用于 ajax 以及 XSS。
  • 表单提交讨论了在表单中传递一个令牌,例如使用视图状态。这不适用于 $.ajax
  • @frenchie - 您可以使用 ajax 中的数据传递令牌。例如,如果您传递 JSON。
  • 你能解释一下吗?不鼓励在没有上下文的情况下进行链接 - stackoverflow.com/help/how-to-answer
【解决方案2】:

一般的黄金法则:

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

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

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

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

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

【讨论】:

  • 视图状态?我的请求将使用 $.ajax 转到页面,因此我无法使用视图状态的数据进行回发。
  • 这只是具体验证机制的一个例子。
  • 这如何回答这个问题?
【解决方案3】:

我会尽力解释:

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

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

【讨论】:

    【解决方案4】:

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 2011-09-25
        • 2013-11-16
        • 1970-01-01
        • 2010-12-20
        • 2021-01-30
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 2019-12-11
        相关资源
        最近更新 更多