网站内容劫持 广告(什么是HTTP劫持呢,大多数情况是运营商HTTP劫持)

优采云 发布时间: 2021-11-03 22:17

  网站内容劫持 广告(什么是HTTP劫持呢,大多数情况是运营商HTTP劫持)

  什么是 HTTP 劫持?大多数情况下,运营商HTTP劫持。当我们使用 HTTP 请求请求一个 网站 页面时,网络运营商会将精心设计的网络数据包插入到正常的数据流中,让客户端(通常是浏览器)显示“错误”的数据,通常是一些弹出——上橱窗、促销广告或直接展示特定的 网站 内容。大家应该都遇到过吧。

  DNS劫持

  DNS劫持就是劫持DNS服务器,通过某种方式获取某个域名的解析记录控制权,然后修改该域名的解析结果,导致对该域名的访问从原来的IP地址转移到修改后的指定IP。其结果是无法访问特定网站或访问的是虚假网站,从而达到窃取信息或破坏原有正常服务的目的。

  DNS劫持更是过分。简单地说,我们请求的内容被直接重定向了。本文不会过多讨论这种情况。

  XSS 跨站脚本

  XSS 是指攻击者的漏洞,将恶意代码注入网页。当用户浏览页面时,注入的代码就会被执行,从而达到攻击的特殊目的。

  关于这些攻击是如何产生的,以及攻击者如何将恶意代码注入到页面中,本文不作讨论。只要你知道HTTP劫持和XSS最终都是在客户端执行的恶意代码,通常是用户的浏览器端,本文将讨论假设注入已经存在,如何使用Javascript进行有效的前端防护。

  页面被嵌入到一个 iframe 中,并且 iframe 被重定向

  先说一下我们的页面嵌入了iframe的情况。即,为了尽量减少植入广告对原创网站页面的影响,网络运营商通常会将原创网站页面放入与原创页面相同大小的iframe中。,那么这个iframe就可以用来隔离广告代码对原页面的影响了。

  

  这种情况比较好处理,我们只需要知道我们的页面是否嵌套在iframe中,如果是,则将外层页面重定向到我们的正常页面。

  那么有没有办法知道我们的页面当前存在于 iframe 中?是的,它是 window.self 和。

  窗口.self

  返回对当前窗口对象的引用。

  返回窗口系统中最顶层窗口的引用。

  对于非同源域,iframe子页面无法通过parent.location或者top.location获取具体的页面地址,但是可以写入top.location,也就是说可以控制父页面的跳转。

  这两个属性可以分别简写为self和top,所以当我们发现我们的页面嵌套在一个iframe中时,我们可以重定向父页面:

  if (self != top) {

// 我们的正常页面

var url = location.href;

// 父级页面重定向

top.location = url;

}

  使用白名单允许正常的 iframe 嵌套

  当然,在很多情况下,我们的页面可能会以各种方式进行推广,或者正常的业务需要嵌套在iframe中。这时候,我们需要一个白名单或者黑名单。当我们的页面嵌套在iframe中并且父页面域名在白名单中时,不进行重定向操作。

  如上所述,使用 top.location.href 无法获取父页面的 URL。这时候就需要使用document.referrer。

  跨域 iframe 的父页面的 URL 可以通过 document.referrer 获取。

<p> 1 // 建立白名单

2 var whiteList = [

3 \'www.aaa.com\',

4 \'res.bbb.com\'

5 ];

6

7 if (self != top) {

8 var

9 // 使用 document.referrer 可以拿到跨域 iframe 父页面的 URL

10 parentUrl = document.referrer,

11 length = whiteList.length,

12 i = 0;

13

14 for(; i

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线