为何.htaccess无法阻止被注入的adsbygoogle脚本加载?
你的.htaccess为啥拦不住恶意Google Ads脚本?
你的配置无效,核心是没搞懂Apache指令的适用场景,具体问题出在这两处:
指令完全不对症 :这个指令是用来管控你自己服务器上的本地文件,但你要拦的脚本是存在pagead2.googlesyndication.com的外部资源,根本碰不到外部请求。 里的规则写错了 :deny from只能填IP、IP段或者域名,不能直接写完整URL。而且这个规则是限制别人访问你的服务器资源,反过来管不了你的页面向外部服务器拉脚本的行为。
能生效的解决办法
1. 用Apache Rewrite替换页面里的恶意脚本
要是找不到脚本藏在哪,可以让Apache在输出页面内容时,自动把恶意脚本标签删掉:
RewriteEngine On # 开启输出重写(仅针对GET请求) RewriteCond %{REQUEST_METHOD} !=POST RewriteRule ^ - [E=REWRITE_CONTENT:1] # 读取请求文件内容到环境变量 RewriteCond %{ENV:REWRITE_CONTENT} 1 RewriteRule ^ - [E=REWRITE_BODY:%{REQUEST_FILENAME}] # 移除恶意脚本标签 RewriteCond %{ENV:REWRITE_BODY} (.*)<script.*src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\?client=ca-pub-4262160458050412".*</script>(.*) RewriteRule ^ - [E=REWRITE_BODY:$1$2] # 输出处理后的内容 RewriteCond %{ENV:REWRITE_CONTENT} 1 RewriteRule ^ %{ENV:REWRITE_BODY} [L]
2. 用CSP头直接禁止加载该资源
通过.htaccess设置内容安全策略,把恶意脚本的域名加入黑名单:
Header set Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval'; default-src 'self'; script-src-elem 'self' 'unsafe-inline' 'unsafe-eval'; object-src 'none';"
说明:这里只允许加载自己服务器的脚本,以及必要的内联/eval脚本(如果你的网站需要的话),直接禁止了所有外部脚本,包括那个恶意的Google Ads脚本。如果你的网站有正常的外部脚本需要加载,把对应的域名加到script-src或script-src-elem里就行。
3. 找到注入根源才是根治办法
上面的方法都是临时拦截,最彻底的还是找到脚本怎么进来的:
- 检查网站的公共模板文件(比如header.php、footer.php),看是否被插入了恶意代码
- 登录数据库,查看文章、页面的内容字段,有没有被注入脚本标签
- 检查服务器上的.htaccess、配置文件是否被篡改
- 更新网站的主题、插件到最新版,排查是否有漏洞被利用
内容的提问来源于stack exchange,提问作者davidasor
相关产品推荐
相关产品推荐

