jquery版本安全漏洞问题

 

起因:
公司一次常规安全扫描提出了jquery版本漏洞问题:
1.x系列版本等于或低于1.12的jQuery,和2.x系列版本等于或低于2.2的jQuery,过滤用户输入数据所使用的正则表达式存在缺陷,可能导致LOCATION.HASH跨站漏洞。(漏洞官方修复介绍:http://bugs.jquery.com/ticket/9521)

 

正确解决方法:升级版本。
但是,最新版本的jquery废除了很多api,jQuery团队推出了的一个插件jQuery Migrate,自动恢复那些在最新版本之后被废弃的API,从而让已有的js代码无须改动就能和最新的jQuery库一起正常运行。在引用的jquery文件后引用Migrate文件即可。

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

 

然而由于这个项目历史久远,代码功能繁杂,接手时排查发现引用了多个版本的jquery。仓促的、大规模的改动之后还是出现了很多问题,只能再回退版本,采取临时解决方案。
临时解决方案:隐藏jQuery版本信息,避免被攻击者识别出版本号。

 

操作如下:
>jquery文件重命名;
>jquery文件里头部带有版本号的注释删除;
>jquery文件内版本号清除;
>在 jquery.js 文件中重写$.fn.jquery 属性值;

 

 

然后项目就走常规上线流程了。
but,林子大了什么都有,版本插件多了什么幺蛾子都能冲突,还是有少部分功能页面内调用的jquery插件在没有任何报错的情况下失效了。
经过一系列排查,发现jquery文件内,保留版本号的情况下,那些奇怪的问题就消失了。
所以,最终jquery文件内重写jquery版本而不是清除版本。

 

posted @ 2019-08-29 16:15  Fourteen  阅读(24112)  评论(0编辑  收藏  举报