# jsonp类型的接口调用中如何做安全防护

- Link: https://www.xuepaijie.com/html/skill/devops/699.html
- Published: 2016-10-25T15:22:48+08:00
- Author: Admin

说到jsonp安全性的防范，我们可以从以下几点出发：1、 防止callback参数意外截断js代码，
特殊字符单引号双引号，换行符均存在风险；2、 防止callback参数恶意添加标签（如script），
造成XSS漏洞；3、 防止跨域请求滥用，阻止非法站点恶意调用。

![JSONP](https://www.xuepaijie.com/wp-content/uploads/2016/10/38b46297833a389339761ea6bb5557f3.
png)

其中第三个主流的解决措施可以通过来源refer白名单匹配，以及结合token机制来限制。

而前两点，传统的做法分为以下几种：

1、 白名单原则，通过正则表达式来控制，如^[a-zA-Z0-9]+$来控制仅允许字母与数字，哈，
其它的自己看着写；

2、 reponse中添加header头部，强制指定MIME类型，避免按HTML方式解析，防止XSS漏洞。
这似乎是个很完美的解决方案。但是十分诡异的是，在某些版本的火狐浏览器下，直接访问
MIME类型为JAVASCRIPT的请求时，浏览器仍然会按照HTML解析。或许是该浏览器设计的缺陷，
但它忽略了我们设置的header。但目前而言无法保证所有浏览器严格按照MIME类型解析，将来
可以成为标配。
