【问题标题】:WebSocket and the Origin header fieldWebSocket 和 Origin 标头字段
【发布时间】:2015-02-17 16:13:45
【问题描述】:

以下引用自 RFC6455 - WebSocket 协议。

不打算处理来自任何网页的输入但 仅对某些站点应该验证 |Origin|场是一个起源 他们期望。如果指示的来源对服务器来说是不可接受的, 然后它应该用一个回复来响应 WebSocket 握手 包含 HTTP 403 禁止状态代码。

|起源|头字段保护免受攻击情况时, 不受信任的一方通常是 JavaScript 应用程序的作者 这是在受信任的客户端的上下文中执行的。客户端 它本身可以联系服务器,并且通过|Origin|的机制 header 字段,决定是否扩展那些通信 JavaScript 应用程序的权限。 目的不是为了阻止 非浏览器建立连接,而是确保 受潜在恶意 JavaScript 控制的受信任浏览器 不能伪造 WebSocket 握手。

我只是不确定第二段是什么意思,尤其是 italic 部分。谁能解释一下?或者也许是一个例子。

目前我的理解是这样的:

  • 如果服务器可以确定请求确实来自 Web 页面,则 ORIGIN 标头可用于防止来自不受欢迎的 Web 页面的访问。

  • 如果服务器无法确定请求来自 Web 页面,则 ORIGIN 标头只是建议性的。

【问题讨论】:

    标签: websocket


    【解决方案1】:

    您的理解似乎是正确的,但是..

    我会改写它 - 您可以肯定,javascript 客户端将发送正确的源头。你不知道其他客户端会发送什么(以及值是否正确)。

    这应该会阻止其他页面连接到“您的”网络套接字端点(这很重要,想象一下在 jsfiddle 或某个经常访问的页面上的某处注入了 javascript),但如果您需要确保不会有其他客户端能够连接到它,您需要引入一些其他安全措施。

    我相信这只是为了防止基于浏览器的“数据窃取”或“DDoSing”,仅此而已;你仍然可以通过使用其他客户端来做到这一点。

    【讨论】:

    • 这基本上是为了防止 smartass.com 访问您的 websocket 服务器并将您的服务集成到您的应用程序中,因为 WebSockets 不受 SOP 影响。
    猜你喜欢
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2015-07-29
    • 2023-01-04
    • 2017-11-24
    • 2016-01-11
    • 2013-08-19
    • 2019-02-17
    相关资源
    最近更新 更多