流量劫持一般分为两种:http劫持、DNS劫持

1、HTTP劫持

当我们使用HTTP请求请求一个网站页面的时候,网络运营商会在正常的数据流中插入精心设计的网络数据报文,让客户端(通常是浏览器)展示“错误”的数据,通常是一些弹窗,宣传性广告或者直接显示某网站的内容,大家应该都有遇到过。

2、DNS劫持

我们通过域名访问网页的时候,都需要通过DNS服务器把域名解析到对应的服务器地址上,而用户上网的DNS服务器都是运营商分配的。所以,在这个节点上,运营商可以为所欲为。

对于以上的劫持方式,我们作为前端的开发人员,通过javascript如何来做到有效的防护呢?

对于DNS劫持,由于发生在域名解析的时候,我们无法控制,javascript更无能为力。我们能做的就是拿起手机,投诉网络运营商,或者直接打工信部电话(12300)投诉。

http劫持防范

对于http劫持,运营商在实现上一般有以下几种做法

1、iframe嵌套展示原来正常网页

2、在原html中插入js,再通过js脚本安插广告

3、直接返回一个带广告的HTML

解决方式

首先我们来看页面被嵌入了 iframe 的情况。网络运营商为了尽可能地减少植入广告对原有网站页面的影响,通常会通过把原有网站页面放置到一个和原页面相同大小的 iframe 里面去,那么就可以通过这个 iframe 来隔离广告代码对原有页面的影响。这种情况比较容易处理。我们只要判断我们的页面是否被嵌套在iframe中即可。Window对象中有两个属性self(指向本身的窗口),top(指向顶层的窗口)可以帮我们来识别判断

if (window.self != window.top) {var url = location.href;top.location = url;
}

但是有时候我们在实际业务中,我们的页面确实需要被嵌套在iframe中推广,上面的判断会导致页面无法嵌套,这时候我们可以采用配置域名白名单的方式来解决

var avoidIframeNest = {whiteList : [],init: function(whiteList){if(Object.prototype.toString.call(whiteList) == "[object Array]"){this.whiteList = whiteList;}this.redirect();},redirect: function(){if(self != top){var parentUrl = document.referrer;//是否在白名单内for(var i = 0 ,length = this.whiteList.length ; i < length ; ++ i){var reg = new RegExp(this.whiteList[i],'i');if(reg.test(parentUrl)){return;}}//页面跳转var url = location.href;top.location = url;}}
}

对于js注入问题,一般都会在页面中插入图片标签,展示广告,诱导用户点击。针对这种方式,我们可以通过监控页面插入的图片内容来检测。这里,我们可以利用HTML5的新特性MutationObserver 和window下的DOMNodeInserted事件

Mutation Observer(变动观察器)是监视DOM变动的接口。当DOM对象树发生任何变动时,Mutation Observer会得到通知。具体的介绍可以参考:

http://www.cnblogs.com/jscode/p/3600060.html

转载地址:https://www.cnblogs.com/caizhenbo/p/6836376.html

前端安全——防止流量劫持相关推荐

  1. 【流量劫持】躲避 HSTS 的 HTTPS 劫持

    前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...

  2. android 访问服务器sql_XSS 攻击、CSRF 攻击、SQL 注入、流量劫持(DNS 劫持、HTTP 劫持)—— 浏览器安全

    今天看了 jsliang 大佬关于网络安全的文章,为了加深一下印象,自己动手写一下. 主要参考文章:网络安全 --- jsliang XSS攻击 XSS(Cross Site Script)跨站脚本攻 ...

  3. 流量都去哪了? --- 详谈流量劫持是如何产生的?

    流量劫持是如何产生的? 原文出处:FEX 做最专业的前端[百度前端团队Blog] 原文链接:http://fex.baidu.com/blog/2014/04/traffic-hijack/ 流量劫持 ...

  4. 疑似天津联通hei产:记一次被流量劫持薅羊毛

    不得不说,做开发这么多年,流量劫持这个东西,大都只是:"听说过,没见过,两万五千里~".这次结结实实被坑了一把,还是头一回.出来混,该经历的逃不过. 说来你不信 话说我们团队(坐标 ...

  5. 疑似天津联通黑产:记一次被流量劫持薅羊毛

    不得不说,做开发这么多年,流量劫持这个东西,大都只是:"听说过,没见过,两万五千里~".这次结结实实被坑了一把,还是头一回.出来混,该经历的逃不过. 说来你不信 话说我们团队(坐标 ...

  6. 教懂你什么是 “ 流量劫持 ”

    喜欢就 关注 我们吧! 概述 :  Wo - 公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆). 今日主题:流量劫持.大家经常会看到公司的一些首页被插入一些小广告,这也就是流量劫持,今儿 ...

  7. 首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持

    首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持 https://tech.sina.cn/digi/nb/2018-05-15/detail-ihapkuvm0295695.d.html 上海市徐汇 ...

  8. 利用被入侵的路由器迈入内网——抓包,利用路由器漏洞入侵,进行流量劫持...

    from:https://www.anquanke.com/post/id/82638 去年开始利用路由器对目标内网进行渗透的方式方法开始研究,测试了一阵了.看到乌云之前有一篇翻译外国人的文章,讲路由 ...

  9. 什么是流量劫持,如何防止流量劫持?

    流量劫持,是利用各种恶意软件修改浏览器.锁定主页或不停弹出新窗口,强制用户访问某些网站,从而造成用户流量损失的情形.流量劫持是一种古老的攻击方式,比如早已见惯的广告弹窗(如下图)等,很多人已经对此麻木 ...

最新文章

  1. spring-aop-01
  2. 返乡大迁徙,任正非说了两个“不要忘了”
  3. 鼓浪屿天气预报软件测试,厦门鼓浪屿天气预报15天
  4. 【opencv】13.摄像头焦距和视场角
  5. 静态网站任何优化怎么设置_网站关键词怎么设置对网站推广优化有利?
  6. java 枚举迭代_Java中的枚举和迭代器之间的区别
  7. 内外网切换软件_不需要软件,用命令简单实现内外网切换指定网段走哪条线路...
  8. xgboost算法原理_从XGB到SecureBoost:看联邦学习XGB的算法原理
  9. jQuery 文本编辑器插件 HtmlBox 使用
  10. it技术交流平台_IT协会向你招手了,不了解了解?
  11. 【Social listening实操】作为一个合格的“增长黑客”,你还得重视外部数据的分析!...
  12. 从零开始搭建ELK+GPE监控预警系统
  13. wingdings字体符号在哪_wingdings2字体
  14. 世界时钟-国家中英文名称-国家代码-与北京的时差 一览
  15. java 网站微信登录_网站微信授权登录-JAVA版
  16. Airbnb房源信息爬取(二)——获取房源信息
  17. 【反射机制】与 【xml解析 】之 巧夺天工 —————— 开开开山怪
  18. Dubbo comsumer 远程调用流程分析
  19. Android DataBinding学习和实践(二)
  20. HBase在滴滴出行的应用场景和最佳实践

热门文章

  1. HAProxy代理介绍-官方译文
  2. linux chown 命令实例讲解
  3. Hadoop集群搭建超详细说明
  4. 有没有兼职做STM32单片机开发
  5. 程序设计中常用的解题策略 pdf电子书
  6. java按钮点击事件监听_按钮事件监听
  7. 行内块元素加了文字会被挤下来的原因及解决方法。
  8. 低功耗设计(一) —— 设计原理
  9. 从QQ同步助手上导出的短信文件*.csv中读取短信,并运用在Qt程序中
  10. 非科班自学10个月,上岸美团了,今年实习真难