美文网首页
劫持处理

劫持处理

作者: 哪吒闹海全靠浪 | 来源:发表于2017-04-26 14:56 被阅读0次
<!-- 反劫持 S -->
    <script>
        (function () {
            //设置cookie
            function setCookie(name, value, domain, path, expires) {
                if(expires){
                    expires = new Date(+new Date() + expires);
                }
                var tempcookie = name + '=' + escape(value) +
                        ((expires) ? '; expires=' + expires.toGMTString() : '') +
                        ((path) ? '; path=' + path : '') +
                        ((domain) ? '; domain=' + domain : '');

                //Ensure the cookie's size is under the limitation
                if(tempcookie.length < 4096) {
                    document.cookie = tempcookie;
                }
            }

            //获取cookie
            function getCookie(name) {
                var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");

                if (arr = document.cookie.match(reg))

                    return (arr[2]);
                else
                    return null;
            }

            //创建并发送请求
            function createSender(url){
                var img = new Image();
                img.onload = img.onerror = function(){
                    img = null;
                };
                img.src = url;
            }

            /*
             *防劫持逻辑所需参数在此处设置参数即可
             *cookieName:用于记录连续被劫持的次数,为防止死循环,cookie值为3以上则不进行url重置
             *cookieDomain:cookie所在的域
             *reportUrl:非连续性劫持时上报的接口地址【如无需上报,可不填】
             *reportUrl2:连续性劫持时上报的接口地址【如无需上报,可不填】
             */
            var cookieName = 'hiijack';
            var cookieDomain = '.readnovel.com';
            var reportUrl = '<%= staticConf.domains.hiijack %>/ajax/safe/hiijackReport?times=1&_csrfToken='+ getCookie('_csrfToken')||'';
            var reportUrl2 = '<%= staticConf.domains.hiijack %>/ajax/safe/hiijackReport?times=3&_csrfToken='+ getCookie('_csrfToken')||'';

            //判断是否被iframe
            if (top.location !== self.location) {
                //用于记录被劫持的次数
                var countHijack;

                //如果未设置cookie,则需要set一下cookie,否则获取此cookie的值
                if(!getCookie(cookieName)){
                    setCookie(cookieName,0 ,cookieDomain, '', 30*24*60*60*1000);
                    countHijack = 0;
                }else{
                    countHijack = parseInt(getCookie(cookieName));
                }

                //如果连续被劫持的次数大于等于3次,则发请求上报此情况,否则上报非连续性的情况,同时累加被劫持次数、重置当前url
                if(countHijack >= 3){
                    reportUrl2 && reportUrl2!='' && createSender(reportUrl2);
                }else{
                    reportUrl && reportUrl!=''&& createSender(reportUrl);
                    countHijack ++;
                    setCookie(cookieName, countHijack ,cookieDomain, '', 30*24*60*60*1000);
                    top.location = self.location;
                }
            }
            //每次成功进入页面则计数清0
            setCookie(cookieName, 0 ,cookieDomain, '', 30*24*60*60*1000);
        })();
    </script>
    <!-- 反劫持 E -->

相关文章

  • 劫持处理

  • 如何避免百度快照被劫持?

    怎样能预防这种情况的发生以及及时处理百度快照被劫持事件呢?今天,老铁带来的是《如何预防与处理百度快照被劫持》。希望...

  • 黑帽SEO技术汇总

    劫持:域名劫持、网页劫持、PR劫持、公关劫持、蜘蛛劫持、服务端劫持、客户端劫持、快照劫持 站群:常规站群、泛站群、...

  • DNS劫持技术与原理

    DNS劫持含义:DNS劫持又称域名劫持,是通过劫持技术修改域名注册信息,修改DNS解析,劫持修改域名解析结果。使访...

  • 防止运营商劫持,前端解决办法

    防止运营商劫持,前端解决办法 [toc] 常见的劫持方式: 按照劫持的方法不同,我将劫持分为下面两类: 跳转型劫持...

  • 常见劫持手段

    常见劫持手段 按照劫持的方法不同,我将劫持分为下面两类: 跳转型劫持:用户输入地址A,但是跳转到地址B 注入型劫持...

  • 试译《乔治·波尔蒂的36种戏剧性情境》之十:劫持

    情境十:劫持 具体描述 要素 劫持者 被劫持者 救护人 概要 被劫持者被劫持者带走。被劫持者可能被救护人救出。 变...

  • 浏览器劫持和反劫持方案

    启动参数劫持 主页劫持 导航劫持 搜索计费链劫持 这种流量劫持是一个灰色产业,盈利丰厚,所以动力十足,普通用户很难...

  • 我的平台,我做主-与网络劫持的斗智斗勇

    摘要:什么是流量劫持?大致可以分为两种,DNS劫持,以及链路劫持。劫持原因也比较多,DNS篡改,网页篡改,路由篡改...

  • 点击劫持ClickJacking

    点击劫持 图片覆盖 拖拽劫持与数据窃取 触屏劫持 防御ClickJackingframe busting可以用,但...

网友评论

      本文标题:劫持处理

      本文链接:https://www.haomeiwen.com/subject/kxiizttx.html