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”

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐