安全防范

JSONP安全防范解决方案新思路

空扰寡人 提交于 2020-03-14 11:46:24
jsonp安全性防范,分为以下几点: 1、 防止callback参数意外截断js代码,特殊字符单引号双引号,换行符均存在风险 2、 防止callback参数恶意添加标签(如script),造成XSS漏洞 3、 防止跨域请求滥用,阻止非法站点恶意调用 针对第三点,我们可以通过来源refer白名单匹配,以及cookieToken机制来限制 而前两点,传统的做法分为以下几种: 1、 纯手工过滤特殊字符,引号尖括号等,一旦发现潜在恶意字符则服务端拒绝,返回错误。此种方式较为严格,但是随之而来的问题是失败率会有所提升,尤其对于对外开发者。而且JS中恶意字符的变形十分多,此方式需要枚举所有非法字符,可能存在疏漏。我们不应该将潜在的恶意字符都一概屏蔽,因为确实有些需求需要传入并存储这些字符。 2、 对于callback参数作严整的格式检查,或强制约定指定格式。基本可以彻底解决安全问题,但同样是对调用端不是完全透明,使用者需要额外去知晓相关限制和约定,可能会造成不必要的沟通成本。 3、 返回包体添加header头部,强制指定MIME类型,避免按HTML方式解析,防止XSS漏洞。这似乎是个很完美的解决方案。但是十分诡异的是,在某些版本的火狐浏览器下,直接访问MIME类型为JAVASCRIPT的请求时,浏览器仍然会按照HTML解析。或许是该浏览器设计的缺陷,但它忽略了我们设置的header