其他漏洞 - 跨源安全问题

  同源策略(Same Origin Policy):浏览器为保护用户信息免受不同源的网页访问,实施同源策略,规定只有在协议、域名、端口号三者相同的情况下,一个网页或脚本才能访问另一个网页的内容。
  实际上很多场景还是需要进行跨源访问操作(前后端分离、调用第三方接口),常用的有以下几种跨域解决方法:CORS、JSONP、PostMessge、WebSockets、代理服务器。不过提供便利的同时也伴随着一些安全问题……

漏洞场景:JSONP劫持

JSONP的全称是JSON With Padding,是一种基于JSON格式来解决跨域请求资源的方案

tips
  JSONP漏洞通常发生在服务器未对请求的callback参数进行严格的合法性校验,导致攻击者可以恶意操控返回的数据格式,窃取敏感信息或执行恶意代码

缺陷代码

安全场景:正则校验callback参数

tips
安全编码规范:
    1.回调函数名校验:只允许字母、数字、下划线组合,并使用正则表达式进行格式验证。
    2.使用白名单:限制允许的回调函数名为预定义的安全列表。
    3.设置内容类型:将响应类型设置为 application/javascript,防止浏览器误解析为其他类型。
    4.替换为 CORS:优先使用 CORS 替代 JSONP 解决跨域问题。

安全代码