使用$.get请求JS文件未回调却自动执行代码,是jQuery安全问题吗?
jQuery $.get() 请求JS文件时自动执行代码的问题
我在调试Node.js应用时发现一个关键现象:使用jQuery的$.get(code_url)方法(其中code_url指向服务器端JavaScript代码的URL)时,代码会被自动执行。
我预期的行为应该是:
$.get("script.js", function(data) { // data包含'script.js'的内容字符串 // 开发者可选择: // - 将其添加到DOM // - 使用eval()执行 // - 存储供后续使用 });
但实际情况是,即便未设置回调函数做任何处理,目标JS文件的代码仍会被自动执行。
复现细节
测试环境
- jQuery 3.6.3 和 3.7.1
- Google Chrome 123.0.6312.122(64位正式版)
- Linux Ubuntu 22.04
复现代码
Node.js 服务器代码
const express = require('express'); const App = express(); App.use(express.static('www')); App.listen(5000);
前端执行代码(index.js,由index.html加载)
$(document).ready(function() { $.get("utils.js") });
被请求的静态JS文件(www/utils.js)
console.log("Hello World"); let a=1000; console.log(Math.PI*a);
执行后,utils.js中的代码确实被自动执行(已通过Chrome控制台截图验证)。
注:该问题似乎仅在本地服务器环境中出现,但这会导致无法在不自动执行的情况下下载代码,这是jQuery的重大漏洞吗?
内容的提问来源于stack exchange,提问作者Tricotou
相关产品推荐
相关产品推荐

