要找到网站模板中疑似包含跳转代码的JavaScript文件,可以按照以下步骤逐步排查:
1. 全局搜索关键跳转函数
在项目目录中,用代码编辑器(如VSCode)全局搜索以下常见跳转函数:
// 常见跳转代码 window.location.href = "目标URL" window.location.replace("目标URL") window.location.assign("目标URL") window.open("目标URL") document.location.href = "目标URL" // 元刷新(JS动态生成) document.write('<meta http-equiv="refresh" content="0;url=目标URL">') // 可疑定时器(用于延迟跳转) setTimeout(function(){ /* 跳转代码 */ }, 3000)
2. 检查可疑的第三方脚本
-
查看引入的第三方JS文件(如广告、统计、外部SDK):
<script src="//suspicious-domain.com/tracking.js"></script>
-
重点排查:
-
非知名域的脚本(如
xxxyyy.js
) -
带有
track
、analytics
、ad
等字样的文件 -
加载时间较晚的脚本(可能通过JS动态插入)
-
3. 审查动态创建的脚本
跳转代码可能通过 DOM操作 动态插入:
// 动态创建<script>标签 var script = document.createElement('script'); script.src = "malicious.js"; document.body.appendChild(script); // 动态创建跳转链接并触发点击 var fakeLink = document.createElement('a'); fakeLink.href = "http://恶意网站.com"; document.body.appendChild(fakeLink); fakeLink.click();
搜索关键词:
-
createElement('script')
-
appendChild(
-
click()
4. 检查事件监听器
跳转可能绑定在用户事件上(如点击、滚动):
// 可疑事件绑定 document.addEventListener('click', function(e) { window.location.href = "目标URL"; });
解决方案:
-
在浏览器开发者工具中检查元素的事件监听器(Elements → Event Listeners)
-
搜索代码中的
addEventListener
、onclick
、onscroll
5. 排查混淆代码
恶意代码常被混淆(如变量名替换、编码):
// 示例:Base64编码跳转 eval(atob("d2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cDovL21hbGljaW91cy1zaXRlLmNvbSc7"))
应对措施:
-
搜索
eval(
、atob(
、decodeURIComponent(
等函数 -
使用 JS反混淆工具(如 https://deobfuscate.io/)
6. 网络请求分析
在浏览器 Network面板 中:
-
刷新页面,筛选 JS文件
-
观察是否有文件返回 3xx重定向状态码
-
检查文件内容是否包含跳转逻辑(点击文件 → Preview或Response)
7. 自动化工具扫描
使用工具自动检测恶意脚本:
-
Lighthouse:运行安全审计(Security类别)
-
ESLint + 自定义规则:扫描跳转函数
-
网站安全扫描器(如 Sucuri、Quttera)
8. 隔离测试
若仍无法定位:
-
逐个禁用JS文件,观察跳转是否消失
-
使用 二分法注释代码块,逐步缩小范围
常见跳转代码特征总结
类型 | 代码示例 | 搜索关键词 |
---|---|---|
直接跳转 | location.href="http://xxx.com" |
location.href |
定时跳转 | setTimeout(()=>{location.replace(...)},5000) |
setTimeout + location |
动态插入脚本 | document.write('<script src="mal.js">') |
document.write |
事件触发跳转 | button.onclick=()=>{window.open(...)} |
onclick + open |
混淆代码 | eval('var a="hxxp://bad"; location=a') |
eval( + location |
通过以上方法,90%的跳转代码可被定位。重点优先排查第三方脚本和混淆代码,这是恶意跳转的高发区。
本文来自投稿,不代表首晒立场,如若转载,请注明出处:https://www.shoushai.com/p/1517