简单了解下JSONP

先来了解下同源策略;

同源策略即:同一协议,同一域名,同一端口号。当其中一个不满足时,我们的请求即会发生跨域问题。

举例:

http://a.com:80 https://a.com:80 (域名、端口相同但协议不同)

https://a.com:80 https://a.com:8080 (端口不同)

https://a.com:80 https://b.com:80 (域名不同)

三要素:域名、端口、协议

JSONP原理

ajax请求受同源策略影响,不允许进行跨域请求,而scriptimgifram标签等中src属性的链接可以访问跨域的js脚本,利用这个特性,服务端不在返回json数据,而是返回调用某个函数的js代码,在src中调用,以此实现跨域。

存在问题

1.JSONP劫持(也叫JSON劫持?还叫JSON Hijacking)

只要返回敏感信息的json,并且没有验证Referer(或者没有有效的验证手段)均存在此问题;

利用流程:

发现-构造poc-发送给其他用户访问-获取其他用户敏感信息

2.callback可定义导致的安全问题

XSS问题;

 

安全防范

1.JSONP劫持

验证 JSON 文件调用的来源( Referer );

随机token;

 

对应绕过:

  1. Referer过滤规则(正则)不严谨;
  2. 空Referer;忽视了空Referer的情况,用 <iframe> 调用 javscript 伪协议来实现空 Referer 调用 JSON 文件;
  3. token可被爆破。

 

2.callback可定义导致的安全问题

严格定义 Content-Type: application / json;

过滤 callback 以及 JSON 数据输出;

对应绕过:

              绕过不写了,常规XSS绕过。

 

JSONP与CORS

前面讲到了同源策略(SOP),而解决跨域处理问题的办法:

1、JSONP;2、CORS;3、子域代理(已不用)。

 

CORS:跨域资源共享(Cross-origin resource sharing)是H5提供的一种机制,WEB应用程序可 以通过在HTTP增加字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源的,当不同域的请求发生时,就出现了跨域的现象。也算是为了解决JSONP的问题。

  • Access-Control-Allow-Origin:指定哪些域可以访问域资源。例如,如果requester.com想要访问provider.com的资源,那么开发人员可以使用此标头安全地授予requester.com对provider.com资源的访问权限。
  • Access-Control-Allow-Credentials:指定浏览器是否将使用请求发送cookie。仅当allow-credentials标头设置为true时,才会发送Cookie。
  • Access-Control-Allow-Methods:指定可以使用哪些HTTP请求方法(GET,PUT,DELETE等)来访问资源。此标头允许开发人员通过在requester.com请求访问provider.com的资源时,指定哪些方法有效来进一步增强安全性。

JSONP的问题与CSRF? 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值