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版本而不是清除版本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章