跨域+Filter+oAuth

来源:互联网 发布:php 取小数点后两位 编辑:程序博客网 时间:2024/06/12 00:55
一、简述
1.跨域:指AB跨域服务器,当A服务器-->经过浏览器-->访问B服务器时无权限。
注:是由浏览器的同源策略造成的,是浏览器对JavaScript加的安全限制。
2.同源:是指,域名,协议,端口均相同:
1)非跨域:http://www.123.com/index.html 调用 http://www.123.com/server.PHP 
2)跨域
a.主域名不同:http://www.123.com/index.html 调用 http://www.456.com/server.php
b.子域名不同:http://abc.123.com/index.html 调用 http://def.123.com/server.php
c.端口不同:http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php
d.协议不同:http://www.123.com/index.html 调用 https://www.123.com/server.php
注:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

二、解决方案:
1.JSONP:
1) 仅支持GET请求,不支持POST请求。
2.代理:
1)原理:既然是浏览器的限制,则可绕过了浏览器端,转到后端调用
如:www.123.com/index.html调用www.456.com/server.php,可后端写一个接口在去调用www.456.com/server.php,再将返回值 返回给index.html
3.Filter:
1)原理:放开安全拦截,允许某跨域链接访问。即Filter会接到浏览器的url请求,解析后修改Header,允许访问。
2)安全性:安全性较弱,可被其他截取url 恶意攻击,循环调用,击垮服务器。
解决:加上认证手段,如token,cookie等

三、Filter+Token+oAuth
1.session:浏览器对同一请求只存一个session标识

2.Token的:
解决问题:客户端频繁向服务端请求数据,服务端频繁的去数据库查询信息并进行对比
1)登录场景:token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。
a.减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮
2)跨域场景:配合Filter解决跨域方式,token解决Filter带来的安全性问题
a.安全认证,增加服务器安全性,防止恶意攻击

3.Token的方式
1)用设备号/设备mac地址作为Token:
2)将sessionId作为Token
注:token+session可解决重复提交问题

4.oAuth认证:
1)OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的
2)oAuth对Token信息认证:如下图



原创粉丝点击