
Halo网站被强制注入JS,嵌入iframe弹窗广告的解决办法
最近我的Halo博客遭遇了一场“广告劫持”——页面被恶意嵌入了iframe标签和陌生script,控制台不断报错,用户体验直线下降。经过一番排查,我找到了问题的根源和解决方案,记录下这次实战经历。
🕵️ 问题现象
网页被注入未知iframe和script标签
网络请求中出现大量陌生JS文件
控制台持续报JS执行错误
仅在使用某些WiFi时出现,切换4G网络正常
🎯 根本分析
问题出在路由器DNS劫持!某些公共或不太安全的路由器会被恶意修改DNS设置,在HTTP流量中强行插入广告代码。而启用HTTPS的网站因其加密特性,能够有效防止这种中间人攻击。
🛡️ 解决方案(亲测有效)
1️⃣ SSL证书加密(首选方案)
为博客配置HTTPS是根本解决方法。我使用Let‘s Encrypt免费证书,通过FRP内网穿透实现自动HTTP到HTTPS跳转:
# FRPC客户端配置
[web]
type = https
custom_domains = yourdomain.com
plugin = https2http
plugin_crt_path = /path/to/cert.pem
plugin_key_path = /path/to/private.key
force_https = true
配置中插入force_https = true把所有HTTP请求自动重定向到HTTPS,广告注入问题彻底解决。
2️⃣ Meta标签防护
在HTML头部添加:
<meta http-equiv="X-Frame-Options" content="DENY">
阻止页面被嵌入iframe,但只能防护部分攻击。
3️⃣ JavaScript防护
<script type="text/javascript">
if(top.location!=self.location)top.location=self.location;
</script>
检测页面是否被嵌套,自动跳出框架。
4️⃣ CSS屏蔽方案
<style type="text/css">
iframe{ v:expression(this.src='about:blank',this.outerHTML='');}
</style>
通过CSS将iframe显示为空白,作为临时应急措施。
💡 实践建议
优先实施HTTPS:其他方法都只是权宜之计
路由器安全:定期检查路由器DNS设置,避免使用默认密码
网络选择:公共WiFi风险较高,重要操作建议使用移动网络
自从升级到HTTPS后,博客再未出现任何广告注入问题。网络安全无小事,希望我的经验能帮助遇到类似问题的博主们!
本文是原创文章,完整转载请注明来自 午后阳光
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果