【问题标题】:Possible values for X-Requested-With header?X-Requested-With 标头的可能值?
【发布时间】:2020-07-30 06:03:40
【问题描述】:

x-requested-with 标头让我有点困惑。我知道它可以用来防御 CSRF 攻击,并且可以用来识别 Ajax 调用……但它到底是什么?

它只是告诉你请求是什么......请求了什么?

是否存在一种合理的情况,即标头存在但设置为“XMLHttpRequest”以外的某个值?我会这么想,但我从未见过它设置为其他任何东西。

【问题讨论】:

    标签: security web csrf csrf-protection


    【解决方案1】:

    就像User-Agent 标头一样,它由客户端提供,可以包含任何内容。

    对于任何服务器端的安全检查来说,它都不可靠。

    【讨论】:

    • 对于任何安全检查都不可靠? stackoverflow.com/questions/17478731/…
    • CORS 是一种客户端机制,在浏览器中工作。这意味着,为了让您认为它可靠,您必须假设您的每个访问者都有一个现代的、最新的浏览器。在某些情况下这是可以接受的……我想我说“任何”是过火了;我的意思是“任何服务器端”。
    • 嗯。有趣的。您还说标题可以是“任何东西”。你能想出不是“XMLHttpRequest”的任何(非恶意)情况吗?还是在实践中总是“XMLHttpRequest”(尽管理论上可能是这样)?
    • 当然...流行的 JS 框架在执行 AJAX 请求时将其设置为该值,只是因为没有其他方法可以告诉您它是 AJAX 请求 - 'XMLHttpRequest' 已成为事实该指示的标准值。但是如果你构建一个 HTTP 客户端来做一些专门的事情,你可以将它设置为另一个值,即使只是为了记录目的。
    • 换句话说 - 是的,它只是用来让客户告诉你他们是如何提出请求的。
    【解决方案2】:

    Android 将 X-Requested-With 设置为应用的包 ID,用于使用 WebView 组件将浏览器嵌入其 UI 的第三方应用。

    据推测,这可用于调试和/或统计,但这些值不能被信任,因为攻击者可能会编写一个自定义客户端,将其设置为任何内容,以试图破坏您的服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-12
      • 2013-07-02
      • 2011-12-31
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      相关资源
      最近更新 更多