V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stevenkang
V2EX  ›  SSL

中国移动太贱了, https 都能挟持

  •  
  •   stevenkang · 2017-12-14 10:35:03 +08:00 · 6080 次点击
    这是一个创建于 2531 天前的主题,其中的信息可能已经有所发展或是发生改变。

    周末的时候安全证书到期了,替换了新的证书,周一上班的时候部分用户反馈网站无法正常访问,用很多设备进行排查都没有找到原因,直到今天发现,CDN 上的 js 竟然被运营商替换了,我们全站用的都是 https 链接,怎么会被替换呢,完全没想到是这种可能;

    以下的我用浏览器正常访问以及客户访问的截图,同样都是走的 https 协议: https://img.51checai.com/upload/lib/validate/jquery.validate.method.min.js

    图片

    莫非运营商在我更换证书的期间挟持并缓存了内容?

    第 1 条附言  ·  2017-12-14 15:49:24 +08:00
    之前有些细节没有说明清楚,这里集中补充一下:

    * CDN 厂商是阿里云,回源地址是阿里云的 OSS 产品,两款产品之间通讯被挟持的可能性个人认为较小;
    * 有些怀疑是 js 没有编译就发布到 cdn 上面了,这里可以自行访问我原文给出的有问题的 js 地址来验证自己猜测的对不对;
    * 我们主站 www 是强制 https 协议的,CDN 之前由于别的网站要用自适应协议因此就没有强制 https,这也有可能导致运营商挟持的可能;
    * HTML 中引入 js 的协议都是 https,个人认为跟第 4 条 CDN 没强制 https 无关;
    25 条回复    2017-12-14 21:48:02 +08:00
    iyaozhen
        1
    iyaozhen  
       2017-12-14 11:00:43 +08:00 via Android
    你这没强制 https,是不是访问 http 的时候被运营商替换了
    stanjia
        2
    stanjia  
       2017-12-14 11:02:52 +08:00
    qq 秀不错。
    morethansean
        3
    morethansean  
       2017-12-14 11:10:10 +08:00
    你们网站是强制 https 的吗?还是 http 也能返回结果的?另,你 CDN 回源的时候选了强制 https 吗?
    suikator
        4
    suikator  
       2017-12-14 11:51:21 +08:00 via Android
    HSTS
    isCyan
        5
    isCyan  
       2017-12-14 12:42:40 +08:00
    应该是 CDN 回源的时候被劫持了? CDN 回源有 HTTPS 吗?
    honeycomb
        6
    honeycomb  
       2017-12-14 12:43:13 +08:00 via Android   ❤️ 1
    检查 cdn 回源
    des
        7
    des  
       2017-12-14 12:51:41 +08:00 via Android
    后排提醒,有些无良 cdn 商也是可能会插广告的
    NemoAlex
        8
    NemoAlex  
       2017-12-14 13:18:35 +08:00 via iPhone
    楼上说的都对,后后排提醒,无良浏览器以及无良浏览器扩展,在用户端也是可以为所欲为的。
    yingfengi
        9
    yingfengi  
       2017-12-14 13:24:41 +08:00 via Android
    是否全局 https
    CDN 回源是否 https
    CDN 哪家的
    ctsed
        10
    ctsed  
       2017-12-14 13:42:56 +08:00
    后排贴墙提醒:楼上们看过 lz 给的截图代码没就认为存在劫持?给的手机截图和劫持有一丁点关系???有一个字是弹广告相关的吗?里面的代码是加载 js,域名也是 lz 自己的,第二段代码加载的是本地的一个打包后的 js,开发环境代码没编译就发到 cdn 了,甩锅给移动?
    stevenkang
        11
    stevenkang  
    OP
       2017-12-14 15:36:00 +08:00
    统一回复,我们主站 www 强制的 https 访问,客户访问时也是 https 协议,主要是 CDN 上面的 js 没有强制 https,但是在代码里面引入的时候是走的 https 应该不会有问题才对
    stevenkang
        12
    stevenkang  
    OP
       2017-12-14 15:36:10 +08:00
    CDN 用的阿里云的
    stevenkang
        13
    stevenkang  
    OP
       2017-12-14 15:38:53 +08:00
    @isCyan 有可能是回源的时候被挟持了,不过我们的 js 全部放在阿里云 oss 上面的,CDN 回源直接走的 oss 网址,运营商能挟持阿里云两款产品之间的通讯也太屌了嘛
    stevenkang
        14
    stevenkang  
    OP
       2017-12-14 15:43:07 +08:00
    @ctsed 你可以访问一下那个 js 验证你说的对不对,如果说是没编译就发到 cdn 上了,那所有人都会访问到那个被修改过后的内容,客户和我访问同样的地址,我的是正常的,客户的是被修改过的,这不是劫持那是什么
    ctsed
        15
    ctsed  
       2017-12-14 16:00:32 +08:00
    @stevenkang 可能有缓存,造成这问题原因如楼上列举的有很多可能,你仔细看下手机截图,里面都是正常加载逻辑,最后加载一个本地的 bundle,可有一句广告代码?

    https 除非中间人证书,浏览器会弹告警手动忽略才能访问,否则劫持不了,你看你 qq 的图是不是 https 的?

    这种访问异常问题就得一步一步确认,自己排查问题都不上心,骂两句移动再跟我怼能解决问题?反正是你们公司问题也不关我事,祝早日倒闭
    b821025551b
        16
    b821025551b  
       2017-12-14 16:12:33 +08:00
    不负责任瞎猜一下:
    开发版本不小心发布了->赶紧改成生产版本->这时候 client 已经加载过开发版,而且网站引用 js 的地方都没有加时间戳刷新->client 用的还是开发版
    stevenkang
        17
    stevenkang  
    OP
       2017-12-14 16:40:33 +08:00
    @ctsed 已 Blocked
    @b821025551b 你的这种猜测在别的公司有可能发生,我们这里 cdn 上存放的大多都是第三方 js 或者一两年都不会改一次的 js,我们的前端 js 代码并未使用编译器,仅仅是用的很原始的开发流程,不存在编译的过程。cdn 上的文件都是存放 oss 上的,任何开发人员都没有修改的权限。oss 上只允许新增 js,不允许删除、修改任何 js,而且必须写邮件提交 之后才会存放在 oss 上,之后就一直不会去修改和删除了
    stevenkang
        18
    stevenkang  
    OP
       2017-12-14 16:42:32 +08:00
    @isCyan 刚联系阿里云方排查了一下,CDN 回源正常的,因为用的 oss 出现异常的可能性实际上也小。现在排查之后可以确认是客户访问 CDN 节点时被挟持了,奇怪的是走的 https 协议也被挟持,还给我们转成 http 协议来加载了
    hgc81538
        19
    hgc81538  
       2017-12-14 16:46:25 +08:00
    可能是用戶的 App 挟持了通讯
    stevenkang
        20
    stevenkang  
    OP
       2017-12-14 16:46:33 +08:00
    @morethansean 是强制 https 访问,http 访问会被重定向到 https 上,cdn 没有强制 https,怀疑客户访问我们其他网站的时候,页面引入了 http 协议的 cdn 文件时被挟持了,客户在访问主站时使用的被挟持的缓存文件
    stevenkang
        21
    stevenkang  
    OP
       2017-12-14 16:48:44 +08:00
    @hgc81538 有这种可能,出问题的几乎都是 android 手机,目前没有收到 iOS 系统的遇到问题,可能客户手机上安装了别的什么软件
    LeungJZ
        22
    LeungJZ  
       2017-12-14 16:48:45 +08:00
    @stevenkang
    其实 @ctsed 说的不无道理,你们客户那边加载了可能是一个测试用的 js,很明显,截图中,不仅引入了你们的 js,还引入了一个测试开发才会命名为 bundle.js 的文件。
    所以还是需要从 cnd 那边再排查,看是不是他们那边的 cdn 节点缓存依旧存在。
    ctsed
        23
    ctsed  
       2017-12-14 16:53:13 +08:00
    祝你开心祝 51 车财网早日倒闭
    stevenkang
        24
    stevenkang  
    OP
       2017-12-14 17:13:48 +08:00
    @LeungJZ 肯定说的有道理,不过我给出了链接,自行测试之后可以排除这种可能。只有开发才会命名的 bundle.js 文件有可能是山东青岛移动在弄挟持的时候他们那边开发人员命名的。

    这里强调一下呀,我们 CDN 上面的所有文件只会新增,不会修改和删除的。
    lslqtz
        25
    lslqtz  
       2017-12-14 21:48:02 +08:00 via iPhone
    我个人只认为是你们问题。
    运营商大规模劫持 https 早炸了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:31 · PVG 17:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.