WebSocket和Origin头字段

时间:2015-02-17 02:10:20

标签: websocket

以下内容引自RFC6455 - WebSocket协议。

  

不打算处理任何网页输入的服务器   只对某些网站应该验证| Origin |领域是一个起源   他们期待。如果指示的来源对服务器不可接受,   那么它应该回复WebSocket握手   包含HTTP 403 Forbidden状态代码。

     

The Origin |标题字段可以防止攻击时的情况   不受信任的一方通常是JavaScript应用程序的作者   正在受信任客户端的上下文中执行。客户端   本身可以通过| Origin | 的机制联系服务器和    标题字段,确定是否扩展这些通信    JavaScript应用程序的权限。 意图不是要防止   非浏览器建立连接,而是确保连接   受信任的浏览器受潜在恶意JavaScript的控制   无法伪造WebSocket握手。

我无法确定第2段的含义,尤其是 italic 部分。任何人都可以解释一下吗?或者也许是一个例子。

到目前为止,我的理解是这样的:

  • 如果服务器可以确定请求DO来自 Web 页面,则可以使用ORIGIN标头阻止来自不受欢迎的 Web 页面的访问。 / p>

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

1 个答案:

答案 0 :(得分:5)

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

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

这可以防止其他网页连接到"您的" Web套接字端点(这是一个大问题,想象在jsfiddle或某些经常访问的页面上的某处注入javascript),但是如果你需要确保没有其他客户端能够连接到它,你需要引入其他一些安全措施。

我认为这只是为了防止基于浏览器的数据窃取"或" DDoSing",没有别的;你仍然可以通过使用其他客户端来做到这一点。