在网站开发设计的过程当中,我们会多多少少的遇到网站跨域的问题,一般网站的跨域,除了一个简单的img、link、script、iframe等等的标签调用法的跨域,还有一些特殊用途用到的跨域方式,我们现在了解应用比较广泛的JSONP跨域。
JSONP 网站跨域方式
JSONP英文称呼(JSON WITH PADDING),跨域的作用机制是调用在script标签里,这个需要网站开发人员在设计的过程当中,前端以及网站后端都要做好函数对接工作,这样才能使JSONP的跨域有效果。原理机制是当用户访问并请求到网站后端的情况下,会返回一个JS的地址,该JS地址会直接调用之前程序员设置好的函数,并把用户前端输入的数据作为一个参数,传入到后端服务器里,并成功的完成数据的对接工作。
我们看个例子,如下图所示:
JSONP跨域方式
当用户访问一个页面,是不同跨域的页面就会返回没有值的页面,在上面的这个例子里,我们可以看出来,程序内置好的函数为foot经过callback函数的调用并直接传递给服务器的后端,后端服务器根据传递过来的参数值进行判断匹配,并返回给用户相应的值,来达到网站交互的功能,并实现整个jsonp的跨域调用,在整个调用过程当中,我们使用的都是script标签,用户的提交方式也只能是以GET提交数据的方式来执行。
JSONP跨域调用的方式上还存在着一些安全风险:
第一个是API 跨域调用的接口页面是大家都可以调用的那还好说,如果是管理员内部使用的一个API跨域接口那么带来的安全风险也是很大,存在着用户隐私安全泄露风险。
第二个是跨域调用返回的函数里用的JS代码的话,那么前端用户输入过来的值没有做判断的话,或者是安全过滤的话,有可能造成SQL注入问题,以及XSS跨站攻击,甚至严重一点的话会导致SOME漏洞的发生。
以上两个安全风险,在程序员开发网站代码的过程中,一定要提前做好漏洞修复,包括网站上线后,要做好网站安全检测,检测是否存在以上的安全风险,尽可能的对用户输入的值进行严谨的过滤,保障整个网站的安全稳定运行。