当前位置:首页 > 娱乐

360浏览器取消阻止跨站脚本

360浏览器把“阻止跨站脚本”的浏览选项默认勾选,这事儿我琢磨过一阵子。消阻昨天帮朋友排查一个后台登录问题,止跨站脚折腾半天,浏览最后发现就是消阻它搞的鬼——第三方支付回调的接口被拦得死死的,页面白屏,止跨站脚控制台里一片红。浏览

说句实话,消阻这个功能的止跨站脚本意不坏。跨站脚本攻击,浏览也就是消阻XSS,确实是止跨站脚前端安全里最烦人的一类。攻击者往页面里塞一段恶意脚本,浏览就能偷cookie、消阻劫持会话、止跨站脚伪造操作。普通用户根本防不住,浏览器主动拦一道,理论上是个好事。可问题在于,360的拦截策略有时候太“莽”了。

它不是按标准XSS特征来过滤的,而是看请求来源和页面上下文。只要你的页面里嵌了第三方脚本,比如统计代码、客服系统、支付SDK,而那个脚本又尝试跨域读取或提交数据,它就可能被判定为“跨站脚本”直接掐断。你甚至看不到完整的拦截日志,只在地址栏旁边有个小图标,点开才显示“已阻止跨站脚本”,连具体是哪个请求都没写清楚。

我遇到的实际案例是:一个电商站,用的支付宝即时到账接口,用户在支付成功后跳回商户页面,页面里有一段JS要读取支付宝返回的参数并POST给后端。这段代码放在独立JS文件里,域名和主站不同。360浏览器直接给拦了,用户付完钱页面卡在空白处,订单状态不更新,后台显示“待支付”。朋友差点以为是支付宝接口问题,查了两天接口文档,最后关了那个选项,一切正常。

这种误伤挺要命的。你没法要求每个网站都把自己的脚本全部内联到主页面里——那样代码没法维护,缓存也没法做。更合理的做法是,浏览器只拦截那些明显可疑的跨域请求,比如动态构造的script标签、带eval调用的字符串,而不是一刀切地阻断所有跨域脚本执行。

360的拦截逻辑里有个“信任站点”白名单,你可以手动添加,但那个入口藏得深。设置里翻好几层,找到“高级设置”下的“安全设置”,再点“跨站脚本拦截设置”,才能看到白名单列表。大多数人根本不知道有这玩意儿,出了问题只会觉得网站坏了。

我个人的态度是:这个功能对技术小白可能有点用——他们逛的网站少,遇到恶意脚本的概率也低,拦了就拦了,误伤顶多就是某个页面功能失灵。但对开发者或者经常用后台系统的人来说,建议直接关掉。你要真想防XSS,靠浏览器过滤是治标不治本,后端做输入校验、输出编码才是正路。更别提360的过滤规则更新速度,跟得上现在前端框架的迭代吗?怕是难。

话说回来,我也理解360的考量。国内浏览器市场卷得厉害,安全功能不做得显眼一点,用户觉得你没防护能力。但“显眼”不等于“有效”,更不等于“好用”。一个功能误伤率太高,反而让用户形成条件反射——出问题先关安全设置,那它还有什么存在意义?

如果你正好被这个问题坑过,别急着骂网站开发。打开360浏览器设置,找到那个拦截选项,取消勾选,刷新页面。大概率就好了。要是没好,那再排查别的——但至少,你排除了一个最隐蔽的干扰项。

分享到: