jQuery版本低引起的漏洞——CVE-2020-11022/CVE-2020-11023
漏洞号:CVE-2020-11022/CVE-2020-11023
影响范围:jQuery >= 1.0.3 < 3.5.0
漏洞原理
见:jQuery最新xss漏洞分析——CVE-2020-11022/11023 - 云+社区 - 腾讯云 (tencent.com)
漏洞复现
https://vulnerabledoma.in/jquery_htmlPrefilter_xss.html
要想在项目本地实现,可把该html保存下来,修改script的src属性为项目引用js的地址,再打开即可操作实现。
修复方案
1)更新jQuery到3.5.0或更高版本
https://code.jquery.com/jquery-3.5.0.js
2)使用XSS清理工具清理用户输入的HTML,官方推荐:
https://github.com/cure53/DOMPurify
这里使用方案一,升级jQuery版本。
升级jQuery
jQuery官网:Official jQuery Blog | New Wave Javascript
项目使用的jQuery是1.x。升级版本根据官方指引使用migrate插件。
搜索migrate,得到最新的Migrate插件是2016年的,但是给出了升级到jQuery3.0的途径。
按照指引,先将1.x升级至1.x版本最新的1.12.3,并同时使用migrate 1.4.1插件,对警示信息指出的问题进行修改。然后再升级至当前最新的3.x版本,同时使用migrate 3.x插件。
现在(22年3月)jQuery最新的版本是3.6.0。上面指引并未给出migrate 3.x的链接。不过在jQuery 3.6.0的发布博客中可以找到。
同时也给出了3.5的升级指引和不能升级到3.5时可用的补丁等。
Migrate 3.x插件下载地址:GitHub - jquery/jquery-migrate: A development tool to help migrate away from APIs and features that have been or will be removed from jQuery core
遇到的警示信息
参考官方指引:jquery-migrate/warnings.md at main · jquery/jquery-migrate · GitHub
- JQMIGRATE: jQuery.fn.focus() event shorthand is deprecated 参考jQuery.fn.click()的替换方法:.focus()换成.trigger(“focus”)
- JQMIGRATE: jQuery.isFunction() is deprecated 参考jQuery.type()的替换方法,将原来的$.isFuntion(arg)换成typeof arg === “function”
版权归原作者 Tracts 所有, 如有侵权,请联系我们删除。