WebSocket协议如何对非浏览器客户端实施访问控制?

时间:2015-02-16 08:39:35

标签: websocket

根据RFC 6455 websocket protocolbrowser client将在WebSocket握手阶段包含HTTP Origin标头字段。 WebSocket服务器将使用Origin来检查客户端是否具有访问权限。

但是对于更强大的non-browser client,握手阶段的Origin标题可以被编译成任何东西。 WebSocket协议如何使用此类Origin值来决定是否接受来自非浏览器客户端的握手?

即使使用browser client,用户也无法使用JavaScript为握手创建假Origin标头?

似乎仅Origin标题太脆弱了。

1 个答案:

答案 0 :(得分:0)

Origin标头仅阻止smartguy.com用户无意中使用您的websocket服务,因为WebSockets不受SOP的影响。

想象一下,您创建了一个通过WebSockets进行通信的优秀交易应用程序,现在我在其他地方创建了一个花哨的UX应用程序,并编写连接到您的服务并与之交互的javascrit。您的服务如何知道用户是否从目标页面连接? Origin标题。

当然,任何内容都可以在HTTP请求中被篡改,但这对所有HTTP通信都是通用的。您无法判断用户是在使用C ++客户端还是浏览器客户端。