Web Sockets

目标:php

在一个单独的持久链接上提供全双工、双向通讯。与其余方案不一样,Web Sockets不使用HTTP协议,而使用一种自定义的协议。这种协议专门为快速传输小数据设计。虽然要求使用不一样的Web服务器,但却具备速度上的优点算法


过程:跨域

  • 建立Web Socket
  • HTTP请求发送到浏览器,发起链接
  • 服务器响应
  • 使用的HTTP升级为Web Socket协议

也就是说,使用标准的HTTP服务器没法实现Web Sockets,只有支持这种协议的专门服务器才能正常工做浏览器

在使用Web Socket URL时,必须带着这个模式(将来可能支持其余模式)安全

  • 未加密: ws://
  • 加密: wss://

使用自定义协议而非HTTP协议:服务器

  • 好处cookie

    可以在客户端和服务器之间发送很是少许的数据,而没必要担忧HTTP那样的字节开销网络

    适用于移动应用(带宽和网络延迟)socket

  • 缺点:函数

    制定协议的时间比制定JavaScript API的时间还要长

支持Web Sockets为浏览器:

Firefox 6+ 、 Safari 5+ 、 Chrome和iOS 4+版Safari

Web Sockets API

  1. 建立Web Socket,先实例一个WebSocket对象并传入要链接的URL:

    var socket = new WebSocket("ws://www.example.com/server.php")

-Ps: 必须给WebSocket构造函数传入绝对URL。同源策略对Web Sockets不适用,所以能够经过它打开到任何站点的链接。至因而否与某个域中的页面通讯,彻底取决于服务器。(经过握手信息就能够知道请求来自何方)-


为确保经过XHR访问的URL安全,通行的作法就是验证发送请求者是否有权限访问相应的资源

  • 要求以SSL链接来访问能够经过XHR请求的资源
  • 要求每一次请求都要附带通过相应算法计算获得的验证码

注意: 如下措施对防范CSRF攻不起做用。

  • 要求发送POST而不是GET请求 --- 很容易改变
  • 检查来源URL以肯定是否可信 --- 来源记录很容易伪造
  • 基于cookie信息进行验证 --- 一样很容易伪造

ps: XHR对象也提供了一些安全机制,虽然表面上看起来保证安全,但实际上却至关不可靠。

如: xhr.open("get","example.php",true, "usename","password") // 不要这样作!!!

即使能够考虑这种安全机制,可是仍是尽可能不雅这样作。把用户名和密码保存在JavaScript代码总自己就很不安全的。任何人,只要他会使用JavaScript调试器,就能够经过查看相应的变量发现纯文本形式的用户名和密码

同源策略

: 是对XHR的一个主要约束,它为通讯设置了“相同的域、相同的端口、相同的协议”这一限制。

试图访问上述限制以外的资源,都会引起安全错误,除非采用CORS(Cross-Origin Resource Sharing, 跨源资源共享)。IE经过XDomainRequest对象支持CORS,其余浏览器也经过XHR对象原生支持CORS。图像Ping和JSONP是另外两种跨域通讯的技术,但不如CORS

相关文章
相关标签/搜索