根据RFC 6455 websocket protocol,browser client
将在WebSocket握手阶段包含HTTP Origin
标头字段。 WebSocket服务器将使用Origin
来检查客户端是否具有访问权限。
但是对于更强大的non-browser client
,握手阶段的Origin
标题可以被编译成任何东西。 WebSocket协议如何使用此类Origin
值来决定是否接受来自非浏览器客户端的握手?
即使使用browser client
,用户也无法使用JavaScript为握手创建假Origin
标头?
似乎仅Origin
标题太脆弱了。
答案 0 :(得分:0)
Origin标头仅阻止smartguy.com用户无意中使用您的websocket服务,因为WebSockets不受SOP的影响。
想象一下,您创建了一个通过WebSockets进行通信的优秀交易应用程序,现在我在其他地方创建了一个花哨的UX应用程序,并编写连接到您的服务并与之交互的javascrit。您的服务如何知道用户是否从目标页面连接? Origin标题。
当然,任何内容都可以在HTTP请求中被篡改,但这对所有HTTP通信都是通用的。您无法判断用户是在使用C ++客户端还是浏览器客户端。