WebSocket和Origin标头字段

smw*_*dia 3 websocket

以下引用自RFC6455-WebSocket协议。

不打算处理任何网页输入而仅用于某些站点的服务器应验证| Origin |。字段是他们期望的起源。如果指示的来源是服务器不可接受的,则它应使用包含HTTP 403 Forbidden状态代码的答复来响应WebSocket握手。

|来源| 当非受信方通常是在受信客户端的上下文中执行的JavaScript应用程序的作者时,标头字段可防止遭受攻击。客户端本身可以通过| Origin |机制 与服务器联系。标头字段,确定是否将这些通信 特权扩展到JavaScript应用程序。目的不是要阻止非浏览器建立连接,而是要确保在潜在恶意JavaScript的控制下,受信任的浏览器不能伪造WebSocket握手。

我只是不确定第二段的含义,尤其是斜体部分。有人可以解释一下吗?也许是一个例子。

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

  • 如果服务器可以肯定的是请求确实来自网络页面,起源头可用于防止未欢迎访问的Web页面。

  • 如果服务器不能确保请求来自网络页面,起源头仅仅是咨询。

Pav*_*cek 5

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

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

这应该可以防止其他页面连接到“您的” Web套接字端点(这很重要,请想象在jsfiddle或某些经常访问的页面上注入了javascript),但是如果您需要确保没有其他客户端可以连接为此,您需要引入其他一些安全措施。

我认为这仅是为了防止基于浏览器的“数据窃取”或“ DDoSing”,仅此而已;您仍然可以使用其他客户端来执行此操作。

  • 基本上,这是为了防止smartass.com访问Websocket服务器并将服务集成到应用程序中,因为WebSocket不受SOP的影响。 (2认同)