周末的时候安全证书到期了,替换了新的证书,周一上班的时候部分用户反馈网站无法正常访问,用很多设备进行排查都没有找到原因,直到今天发现,CDN 上的 js 竟然被运营商替换了,我们全站用的都是 https 链接,怎么会被替换呢,完全没想到是这种可能;
以下的我用浏览器正常访问以及客户访问的截图,同样都是走的 https 协议: https://img.51checai.com/upload/lib/validate/jquery.validate.method.min.js

莫非运营商在我更换证书的期间挟持并缓存了内容?
|  |      1iyaozhen      2017-12-14 11:00:43 +08:00 via Android 你这没强制 https,是不是访问 http 的时候被运营商替换了 | 
|  |      2stanjia      2017-12-14 11:02:52 +08:00 qq 秀不错。 | 
|      3morethansean      2017-12-14 11:10:10 +08:00 你们网站是强制 https 的吗?还是 http 也能返回结果的?另,你 CDN 回源的时候选了强制 https 吗? | 
|  |      4suikator      2017-12-14 11:51:21 +08:00 via Android HSTS | 
|  |      5isCyan      2017-12-14 12:42:40 +08:00 应该是 CDN 回源的时候被劫持了? CDN 回源有 HTTPS 吗? | 
|      6honeycomb      2017-12-14 12:43:13 +08:00 via Android  1 检查 cdn 回源 | 
|  |      7des      2017-12-14 12:51:41 +08:00 via Android 后排提醒,有些无良 cdn 商也是可能会插广告的 | 
|  |      8NemoAlex      2017-12-14 13:18:35 +08:00 via iPhone 楼上说的都对,后后排提醒,无良浏览器以及无良浏览器扩展,在用户端也是可以为所欲为的。 | 
|      9yingfengi      2017-12-14 13:24:41 +08:00 via Android 是否全局 https CDN 回源是否 https CDN 哪家的 | 
|  |      10ctsed      2017-12-14 13:42:56 +08:00 后排贴墙提醒:楼上们看过 lz 给的截图代码没就认为存在劫持?给的手机截图和劫持有一丁点关系???有一个字是弹广告相关的吗?里面的代码是加载 js,域名也是 lz 自己的,第二段代码加载的是本地的一个打包后的 js,开发环境代码没编译就发到 cdn 了,甩锅给移动? | 
|  |      11stevenkang OP 统一回复,我们主站 www 强制的 https 访问,客户访问时也是 https 协议,主要是 CDN 上面的 js 没有强制 https,但是在代码里面引入的时候是走的 https 应该不会有问题才对 | 
|  |      12stevenkang OP CDN 用的阿里云的 | 
|  |      13stevenkang OP @isCyan 有可能是回源的时候被挟持了,不过我们的 js 全部放在阿里云 oss 上面的,CDN 回源直接走的 oss 网址,运营商能挟持阿里云两款产品之间的通讯也太屌了嘛 | 
|  |      14stevenkang OP @ctsed 你可以访问一下那个 js 验证你说的对不对,如果说是没编译就发到 cdn 上了,那所有人都会访问到那个被修改过后的内容,客户和我访问同样的地址,我的是正常的,客户的是被修改过的,这不是劫持那是什么 | 
|  |      15ctsed      2017-12-14 16:00:32 +08:00 @stevenkang  可能有缓存,造成这问题原因如楼上列举的有很多可能,你仔细看下手机截图,里面都是正常加载逻辑,最后加载一个本地的 bundle,可有一句广告代码? https 除非中间人证书,浏览器会弹告警手动忽略才能访问,否则劫持不了,你看你 qq 的图是不是 https 的? 这种访问异常问题就得一步一步确认,自己排查问题都不上心,骂两句移动再跟我怼能解决问题?反正是你们公司问题也不关我事,祝早日倒闭 | 
|  |      16b821025551b      2017-12-14 16:12:33 +08:00 不负责任瞎猜一下: 开发版本不小心发布了->赶紧改成生产版本->这时候 client 已经加载过开发版,而且网站引用 js 的地方都没有加时间戳刷新->client 用的还是开发版 | 
|  |      17stevenkang OP @ctsed 已 Blocked @b821025551b 你的这种猜测在别的公司有可能发生,我们这里 cdn 上存放的大多都是第三方 js 或者一两年都不会改一次的 js,我们的前端 js 代码并未使用编译器,仅仅是用的很原始的开发流程,不存在编译的过程。cdn 上的文件都是存放 oss 上的,任何开发人员都没有修改的权限。oss 上只允许新增 js,不允许删除、修改任何 js,而且必须写邮件提交 之后才会存放在 oss 上,之后就一直不会去修改和删除了 | 
|  |      18stevenkang OP @isCyan 刚联系阿里云方排查了一下,CDN 回源正常的,因为用的 oss 出现异常的可能性实际上也小。现在排查之后可以确认是客户访问 CDN 节点时被挟持了,奇怪的是走的 https 协议也被挟持,还给我们转成 http 协议来加载了 | 
|      19hgc81538      2017-12-14 16:46:25 +08:00 可能是用戶的 App 挟持了通讯 | 
|  |      20stevenkang OP @morethansean 是强制 https 访问,http 访问会被重定向到 https 上,cdn 没有强制 https,怀疑客户访问我们其他网站的时候,页面引入了 http 协议的 cdn 文件时被挟持了,客户在访问主站时使用的被挟持的缓存文件 | 
|  |      21stevenkang OP @hgc81538 有这种可能,出问题的几乎都是 android 手机,目前没有收到 iOS 系统的遇到问题,可能客户手机上安装了别的什么软件 | 
|  |      22LeungJZ      2017-12-14 16:48:45 +08:00 @stevenkang   其实 @ctsed 说的不无道理,你们客户那边加载了可能是一个测试用的 js,很明显,截图中,不仅引入了你们的 js,还引入了一个测试开发才会命名为 bundle.js 的文件。 所以还是需要从 cnd 那边再排查,看是不是他们那边的 cdn 节点缓存依旧存在。 | 
|  |      23ctsed      2017-12-14 16:53:13 +08:00 祝你开心祝 51 车财网早日倒闭 | 
|  |      24stevenkang OP @LeungJZ 肯定说的有道理,不过我给出了链接,自行测试之后可以排除这种可能。只有开发才会命名的 bundle.js 文件有可能是山东青岛移动在弄挟持的时候他们那边开发人员命名的。 这里强调一下呀,我们 CDN 上面的所有文件只会新增,不会修改和删除的。 | 
|  |      25lslqtz      2017-12-14 21:48:02 +08:00 via iPhone 我个人只认为是你们问题。 运营商大规模劫持 https 早炸了 |