Callback自定义测试
在浏览器中存在着同源策略,所谓同源是指域名、协议、端口相同。当使用Ajax异步传输数据时,非同源域名之间会存在限制。其中有一种解决方法是JSONP(JSON with Padding),基本原理是利用了HTML里<script></script>元素标签,远程调用JSON文件来 实现数据传递。JSONP 技术中一般使用 Callback(回调函数)参数来声明回调时所使用的函数名,这里往往存在安全问题,由于没有使用白名单的方法进行限制Callback的函数名,导致攻击者可以自定义Callback内容,从而触发XSS等漏洞。
修复建议
(1)严格定义 HTTP 响应中的 Content-Type 为 json 数据格式:Content-Type:
application/json。
(2)建立callback函数白名单,如果传入的callback参数值不在白名单内,跳转到统 一的异常界面阻止其继续输出。
(3)对callback参数进行HTML实体编码来过滤掉“<”、“>”等字符。