网站内容劫持 广告(DNS一个广告劫持(属于DNS污染)(图))
优采云 发布时间: 2021-12-15 10:24网站内容劫持 广告(DNS一个广告劫持(属于DNS污染)(图))
DNS广告劫持(属于DNS污染)
事实上,这并不是一个新概念。几年前,国内一些*敏*感*词*的运营商,尤其是本土运营商,开始抓取用户浏览器访问记录,然后根据不同用户的访问行为有选择地将用户发送给用户。在访问过的网页中推送广告。因为运营商控制了DNS主机,他们可以随意强行改写网站 HTML页面,并使用JavaScript写入返回页面注入广告:这是访问55BBS网站时用户会在屏幕右下角看到京东商城的广告。这样的广告不仅可以在一些中小网站中看到,在国内的大型网站中也能看到。很多网友会立刻怀疑自己的机器有病毒或木马,或者一些恶意的浏览器插件造成了麻烦。其实这就是运营商的鬼魂。
有些用户会坚决投诉。运营商有自己的白名单。投诉成功后,用户将帐号加入白名单,停止投放广告。显然他们不想惹太多麻烦,这种恶心的事情需要暗中进行。
IIS7网站监控工具可以提前防范各种网站劫持,免费在线查询,适用于各大站长、政府网站、学校、公司、医院等网站。可以做24小时定时监控,同时可以让你知道网站是否被黑、被黑、改标题、被黑、被劫持、被墙、DNS是否被污染等,独家测试网站真正的全开时间,让您作为站长,一目了然的了解网站的健康状况!
官方地址:IIS7服务器管理工具
官方地图
另一方面,很多本地运营商会在用户协议中加入DNS劫持后注入广告的行为,让用户无话可说。比如北京联通过去提供不同的收费服务,一种没有广告,一种是注入广告,当然没有广告的价格更高。
2010年,青岛联通也因此类劫持败诉,引起轩然大波,被百度*敏*感*词*20万元。索赔金额显然是小事,但对于中国互联网的成熟仍具有积极意义。在中国,你可以选择的经营者只有几个,就像从一堆你能承受的烂苹果中挑一个。此外,该行业本身缺乏道德和健全的法律约束。仅仅依靠个人投诉和用户投诉是不可能从根本上解决流氓行为的。这可能是互联网不成熟的发展带来的不可避免的痛苦。
技术实现
从理论上讲,运营商拥有HTML页面的所有代码,它可以做任何事情,真正无缝地插入广告,然后将其返回给用户。但是,这种广告的投放是批量行为。如果要为不同的网站页面单独设置广告代码,成本太高。另一方面,嵌入的 JavaScript 代码片段容易受到不同 DOM 环境和 JavaScript 代码环境本身的影响,嵌入的广告无法影响原创 网站 页面的显示和行为。为了尽量减少植入广告对原创网站页面的影响,运营商通常会将原创网站页面放入与原创页面相同大小的iFrame中,并使用 iFrame 隔离广告代码对原创页面的影响。由于不同用户的某些访问会发生这种劫持,所以我的例子不够方便。为了让大家100%观察这个效果,我找了一个中国联通的提醒页面作为例子:
当访问一个不存在的网站,比如这样一个随机填充的域名时,以北京联通为例,它不会直接返回错误代码,而是会重定向到这样一个错误提示页面:
重定向的 URL 是:8080/issueunziped/bj130404/self0.jsp?UserUrl=
这种行为可能不会引起太多批评。毕竟这样的域名是不存在的,对用户和站长影响不大。不过请注意左下角和右下角的广告。在这里,它注入广告的方式和嵌套的 iFrame 与我上面提到的劫持行为完全相同。
现在请将上述URL的self0.jsp改为index.htm,即:
:8080/issueunziped/bj130404/index.htm?UserUrl=
你可以看到这样的页面:
刚才说的广告没了是吧?
您可以将页面 index.htm 视为 网站 的原创页面。然后,操作员创建这样一个新页面,并以 iFrame 的形式嵌入原创页面:
您可以将页面 index.htm 视为 网站 的原创页面。然后,操作员创建这样一个新页面,并以 iFrame 的形式嵌入原创页面:
这样就可以在这个新页面继续写代码,引入广告了:
怎么破?
既然知道了原理,自然很容易想到解决办法。对于这种劫持,一个共同的特点就是原来的网站页面都放在一个iFrame中,那么只需添加这样一个脚本来判断页面是否加载到一个iFrame中,然后让父页面重定向到原页面:(IP地址不同!)
如果(顶!==自我)
top.location.href=this.location.href;
当然,您也可以重定向到您认为可靠的链接,甚至添加您需要的参数和其他信息(例如运营商添加的广告代码的URL)来记录此*敏*感*词*。
多说几句
这种劫持手段还是显得比较原创和泛滥,而这些使用iFrame实现DNS劫持的运营商还是有些良心的,因为对原页面的影响很小,但也有一些本地运营商只是去原页面。在很多情况下,编写 javascript 代码会影响原创页面的显示和行为。这时候问题就麻烦多了。
首先,我们需要获取这个行为的具体信息。一种方法是掌握页面的原创 JavaScript 方法、DOM 对象列表或浏览器请求的域名列表(类似于白名单)。如果发现列表之外的未知方法、DOM 对象的引入、或意外的 URL 请求,则将此类信息发送到服务器进行分析。
比如页面被强制注入这样的代码:
document.write("");
我们可以用一个小技巧来处理,比如 JavaScript 劫持:
document.write = function(){};
让 document.write 方法成为一个空函数,使注入代码的行为无效。当然,具体问题还是要具体分析,最重要的是掌握信息。但话虽如此,我们只是程序员。我们创建的是原创页面。在恶意操作者手中,以技术手段,我们的力量还是太小了。
另外,中国联通的广告系统太没有保护了。只需更改链接,就会暴露Tomcat版本号等信息。如果有人真的想做某事...