未知脚本在 html 正文关闭标签之前

Unknown scripts are prepending before html body close tag

从今天早上开始,我发现一些未知的脚本在 "body" 关闭标签之前,这些脚本是:

<script> var addthis_config = {"pubid":"ra-554ac5c71847b3c2"}; </script><script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-554ac5c71847b3c2"></script>
<script> if (addthis && addthis.layers) { addthis.layers({'share':{'mobile':false}});}</script>

我没有在网站上添加这段代码。我正在寻找这个的根本原因。但是直到这一刻我都找不到删除此脚本的解决方案。我 did/observed 到目前为止:

删除了"body"关闭标签:没有脚本

试图添加一个 html 文件(带有基本标签)index.html 文件: 发现脚本是在正文关闭之前注入的。

脚本只能在首页看到

上传到不同域名的不同主机的文件:没有脚本

Web服务器为Apache,.htaccess内容如下图:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)mywebsite\.ae [NC]
RewriteRule ^(.*)$ http://www.mywebsite.org/ [R,L]

RewriteRule ^(.*)/$ / [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

该网站由亚马逊网络服务托管。有人有过这样的经历吗?

http://www.addthis.com/academy/the-addthis_config-variable/

您正在查看的页面正在使用 addThis,或者第三方脚本正在添加它。

如果这是您的网页,并且您想知道是哪个网页添加了它,请将此代码放在您网页的顶部

document.createElement = (function () {
   var _realCE = document.createElement;
   return function (name,options) {
      if (name.toLowerCase() === 'script') {
         try {
            throw "script added to page";
         }
         catch(e) {
            console.warn(e.message);
            console.warn(e.stack);
         }
      }
      return _realCE.apply(document,arguments);
   }
})();

它会在脚本创建另一个脚本标签时吐出堆栈跟踪。这应该足以让您弄清楚哪个脚本正在对您执行此操作。

如您在评论中所写:

yes only from the specific domain, i tried uploading the same files to a different hosting associated with another domain & the script is not shown there

什么将此脚本添加到网站?

您的主机希望获得更多访问者,因此在您的网页中添加此插件。

这个插件在做什么?

此插件正在创建指向社交网站和其他链接的链接...因此,如果您在 google 上搜索您的网站,您可以选择比页面上更多的内容,例如社交链接等. 你可以阅读一下 here.

如何防止这种情况发生?

您可以在 this address 查看或下载脚本。如果您使用任何免费主机,通常是为什么您的网站上有这个 "ads",否则如果您有正常的付费主机,请尝试联系支持并询问为什么您在网站上有这个脚本或尝试停用它在网站管理中。

终于找到根本原因了!! 实际上,该页面是通过不同的 IP 而不是真正的托管 IP 提供的(可能是 DNS 攻击?)。我在开发人员工具下检查 header 时发现了这一点 ->Response header :

via : Stark 1.0 (Something like this).

然后我尝试了 AWS 托管的 public IP,如果我尝试通过域名加载网站,则该脚本没有出现在 all.But,这个 Via header 是放。所以我把这个问题通知了域名注册商,不知道他们是如何解决这个问题的。