cc *_*ung 45 html javascript html5 websocket
维基百科似乎websockets是安全的:
对于Web浏览器支持,WebSocket协议的安全版本在Firefox 6(名为MozWebSocket),[2] Google Chrome 14 [3]和Internet Explorer 10开发人员预览版中实现....虽然没有已知的漏洞,但它在Firefox 4和5中被禁用...
但W3表示他们不安全:
遵循HTTP过程可能会在Web浏览器上下文中引入严重的安全问题.例如,考虑在一个路径上具有WebSocket服务器的主机和在另一个路径上具有打开的HTTP重定向器的主机.突然之间,任何可以被赋予特定WebSocket URL的脚本都可以被欺骗与Internet上的任何主机进行通信(并且可能与之共享机密),即使脚本检查URL具有正确的主机名.
是http websockets(ws :)安全与否?
是https websockets(wss :)安全与否?
如果不是#2,是否有记录的预防措施?
kan*_*aka 73
WebSocket安全性有很多不同的方面.
您引用的维基百科的snippit指的是将WebSocket客户端屏蔽到服务器数据.这是为了保护行为不端的中间人(例如代理和缓存)不会将WebSocket流量意外地解释为正常的HTTP流量.这里的危险是WebSockets协议可能被用来毒化缓存中介.但是,我应该注意到这只是一个纯粹的理论问题,但是Mozilla和Opera不愿意发布Hixie和早期HyBi版本的WebSocket协议就足够了.因此,IETF决定将客户端添加到服务器屏蔽数据以解决问题.
另外,IETF负责WebSocket协议(IETF 6455),而W3C负责HTML5 WebSocket API(Javascript对象,方法和事件).
WebSocket安全性的另一个方面是跨源安全性.您从W3C WebSocket API规范引用的第二个snippit与跨源安全性有关.WebSockets支持跨源连接(到提供HTML页面的不同主机).这个警告说,如果 WebSockets使用了正常的HTTP跨源程序,这将打开一个巨大的安全漏洞.但是,WebSocket过程正是出于这个原因而不同.首先,WebSocket握手和响应的设计使得无法将WebSocket连接发送到不支持WebSocket连接的HTTP服务器:服务器必须以WebSocket特定方式对密钥进行签名/散列,并在握手响应中返回.第二部分是浏览器必须发送一个Origin头作为握手的一部分(这表示从最初加载HTML/Javascript的位置).这允许服务器选择允许发起 WebSocket连接的域.
最后,有两种WebSocket连接模式:未加密(ws://)和加密(wss://).加密模式使用TLS/SSL加密来加密发送到服务器和从服务器发送的所有数据(包括初始握手和响应).这与用于HTTPS连接的加密机制相同(并在浏览器中使用相同的加密引擎).这可以防止第三方窥探正在传输的数据.
实际上只有两个版本的WebSocket协议值得了解:
Hixie76:此版本的协议添加了跨源安全性和标头散列/签名.但是,由于协议的设计方式,很难向现有Web服务器添加对协议的支持.这是iOS目前支持的版本(希望iOS 6最终会更新到IETF 6455)
IETF 6455:这是去年11月(2011年11月)由IETF标准化的WebSocket协议版本.这是IETF HyBi工作组的工作成果(导致其协议的迭代被标记为HyBi XX).这是当前版本的Chrome和Firefox以及IE 10和很快Opera支持的版本.
| 归档时间: |
|
| 查看次数: |
25290 次 |
| 最近记录: |