关于jsonp实现跨域访问,以及存在的安全问题

jsonp跨域访问的实现

关于jsonp实现跨域访问相关知识,请看某位大佬这篇博文,虽然是2012年写的老文章了,但是对于新手来说写滴是相当不错:深入浅出JSONP–解决ajax跨域问题

jsonp可能导致的安全问题

了解了jsonp之后,大家应该也都明白了,jsonp主要就是用来实现跨域的获取数据,但是如果跨域的接口是暴露在公网上的,到底跨域接口是否是private级别还是public级别呢?这是一个重要的问题,如果是public级别,则无所谓安全问题,如果是private级别肯定是是要对访问者做校验验证来访的Request的合法性的。目前已知的有Referer校验和Token校验。

Referer

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

这里通过对header中的访问发起者的来源进行验证来保证安全性,但是这个Referer是存在被绕过的可能的:
绕过的主要原理就是“不发送Referer”
* 使用data URI方案
* 从HTTPS向HTTP发起请求

Token

主要是指能代表用户身份的标识

这个部分破解的难度较高,但是通过在运行非同源跨域的网站植入恶意代码,间接依靠“白名单”站点来获取Token发起跨域访问,可以同时绕过Referer和Token的问题,但是植入恶意代码的难度较高。

解决方案

总的来说Referer和Token校验是标准,必须要使用的,可以解决常规安全问题,最稳妥的是不使用jsonp,改用别的跨域方案(H5 提供的跨域方案postMessage、CORS、WebSocket)

猜你喜欢

转载自blog.csdn.net/u014021893/article/details/72303110