真正的Web 2.0:会战Web垃圾信息(二)

日期: 2009-04-16 作者:Uche Ogbuji 来源:TechTarget中国 英文

  这个由两部分组成的系列文章提供了如何抵御垃圾信息的详细指导。本文是其中的第2部分,讨论了内容分析、回链(linkback)中存在的垃圾信息问题,以及如何通过黑名单和反垃圾信息服务与其他Web站点管理员共享抵御垃圾信息的经验和种种努力。

  对付Web上的垃圾信息,科学的技术和技巧很重要。在本专栏前一期文章中,我介绍了如何使用工作流对付垃圾信息机器人程序,并且最好不会给正当使用的用户带来任何不便。在本篇文章中,我将讨论垃圾信息的其他方面的问题,比如内容网站间的关系以及垃圾信息受害者如何能够展开协作来对抗垃圾信息散布者。

  社区警察

  对付Web垃圾信息最有效的方式是通过社区行动。垃圾信息是一种大规模的攻击,所以迫切需要大规模的抵抗。如果社区能协助发现并揭露垃圾信息散布者的行为和内容模式,那么这些模式经过共享就能让机器人程序无法或不容易奏效。社区尤其适用于用前一期文章中介绍的方法仍无法对付的其他形式的垃圾信息。首先,我先花点时间介绍回链垃圾信息。

  Linkback垃圾信息

  Weblog以及其他Web文章的目的是为了共享见解和发现。有些时候,受某篇博客条目的启发,人们会直接在Weblog上留下评论。有时,人们则会将这篇博客条目引用到自己的条目或文章中,而linkback是一种技术术语,用于通知您与之建立链接的另一个站点。它是一种网络信号,就好象“ping”的作用,声明了一个条目和另一个条目之间的关系,有助于读者找到相关的内容。但是,linkback 也为垃圾信息散布者提供了滥用Weblog的可乘之机,这些散布者会发送所谓的“sping”(即“spam ping”的缩写)。linkback有三种常见类型,而且全部存在与垃圾信息相关的问题。

  Refback:当Web浏览器用户单击链接从一个页面转到另一个页面时,对第二个页面的请求包含一个HTTP头(它被称为referrer)以及第一个页面的URL。该过程也被称为“refback”。第二个站点可能会跟踪refback,可能会贴出refback的列表,甚至可能 会跟随refback到原始站点并提取诸如标题、元数据、链接文本以及其他围绕此链接的文本等信息。垃圾信息散布者利用这一点来在合法站点上嵌入其客户的链接以提升该客户的搜索引擎概要文件。他们通过在referrer字段内的客户链接来向目标站点发送请求。这被称为“referrer垃圾信息”。对付它的常用反击方法是建立refback站点的黑名单。

  TrackBack:Refback依赖于用户跟踪链接,但一些Weblogger则希望得到一种更为确定的方式来进行linkback通知,主要的Weblog软件提供商之一Six Apart做到了这点。TrackBack是一种规范,包含“发现”(告知在哪以及如何发送ping)以及使用简单HTTP请求的一个ping过程。TrackBack的告知和发现都是嵌入在页面评论部分的Resource Description Framework(RDF)信息。作者对一个条目的引用将会导致向被告知的端点发送一个ping。TrackBack已经在Weblogger中十分流行,垃圾信息散布者于是紧跟Weblogger而至。垃圾信息散布者将会在Weblog爬行以寻找TrackBack侦听程序并向其客户站点发送假的通知。TrackBack垃圾信息的问题太大了以至于很多Weblog不得不禁用TrackBack,就如同有些站点禁用了Weblog条目上的评论表单一样。TrackBack垃圾信息的应对措施类似于本文稍后要介绍的内容分析以及抵御评论垃圾信息的黑名单对策。

  Pingback:Pingback与TrackBack非常接近,只不过通知消息的格式是XML-RPC请求而不是简单的HTTP请求。发现机制也更为完善,使用的是HTML链接或HTTP头,而不是嵌入的RDF。最后一点,Pingack的接收者会跟随这个ping的过程回到原始站点以确保在该站点的确具有这样一个链接,而只这一步就能清除很多垃圾信息散布者。虽然可实现TrackBack来执行这样的检查,但它更多的则是pingback规范的一个重要部分。除了这项检查之外,Pingback的反垃圾信息措施与TrackBack的基本相同。

  内容分析

  不管垃圾信息是来自机器人程序还是机械式的土耳其攻击,它均具有一个根本的弱点。垃圾信息散布者的主要目的就是提高其客户站点在搜索引擎的排名,这个过程被称为“黑帽式搜索引擎优化(SEO)”或“垃圾索引”。除非垃圾信息散布者确实将链接带入,否则整个过程的意义不大,这意味着社区能够借助统计信息以及被报告的链接和链接模式共享垃圾信息客户链接的情报。与之稍有例外的情况是垃圾信息散布者确实在试图直接向该站点的访问者做广告以及对他人财产进行纯粹的蓄意破坏。这也是为何要通过多种手段和策略对付垃圾信息的原因之一。

  统计分析

  内容分析的基本思想有别于社区方式。它涉及到内容的自动检查,通过对文本的统计分析来判断它与任何之前已经被标记为垃圾信息的内容是否接近。最常见的统计方式称为贝叶斯推理,更详细的内容,可以参阅IBM developerWorks的另一篇文章。一旦有人将所帖出的内容标记为是垃圾信息或是好的内容(有时又称为“ham”),统计表就会被更新。贝叶斯推理在对付电子邮件中的垃圾信息以及其他与垃圾信息不相关的领域(比如客户亲和力引擎,或商业推荐引擎)均有突出的表现。

  进入社区

  如能跨多个目标站点执行内容分析,那么它将更为有效。垃圾信息散布者通常都会处理大量这类网站并发出机器人程序来逐个进行垃圾信息侵犯。如果在某个站点上可以检测出垃圾帖子,它就能让其他站点也能辨别出该帖子,这类似于上面描述的垃圾信息bot登记电子邮件和IP地址的热门列表。在内容分析的情景下,有几个商业(以及半商业)服务可作为补充。

  Akismet是知名的协作内容分析系统之一,它是一种商业服务,由一家与WordPress Weblog平台相关的公司提供。用户向服务提交评论并会收到一个标志表明它是否已经被标志为垃圾信息。Akismet是该问题复杂性的生动体现。它是一种封闭服务,这意味着用户和观察者均不能看到垃圾信息的检测过程。这样做的原因是为了让垃圾信息散布者也无法知悉以使其不能攻击系统,但不好的一面是别人无法帮助改进该服务。更糟糕的是,如果合法的评论也被标记为垃圾信息,不免让人无法充分信任该服务。Akismet也曾经因为错把人(包括那些批评过该公司或其创始人的人)放入黑名单而受到过谴责。其他的类似服务还包括Mollom、Defensio和Project Honeypot Spam Domains List(PHSDL)。

  检查注册者和发送者的细节

  很多Weblog都允许一些人来发布评论,但像论坛这样的站点通常都需要在发帖前先进行注册。可以利用注册过程来阻挡垃圾信息散布者。机器人程序通常会跨目标站点重用注册要求的电子邮件地址。即使是能自动生成地址的机器人程序也会在所生成的地址的模式方面留下蛛丝马迹。帮助管理员捕获垃圾信息散布者注册的站点和服务包括“Stop Forum Spam”和“phpBB Anti Spam Project”

  靠近源头

  在应对Web垃圾信息的这场伟大的战役中,较量的焦点波及可写内容空间的每个方面。到目前为止,本文所讨论的方法大都集中于垃圾信息散布者攻击的最明显的对象—目标站点。垃圾信息散布者的行为模式有很多,所以如今的一些反垃圾信息技术都在试图利用这些模式。

  Honeypot

  大多数Web垃圾信息散布者都会在其活动中使用开放的HTTP代理中继(正如很多电子邮件垃圾信息散布者使用开放的SMTP中继一样)。在这种方式下,他们就能掩盖其真正的IP地址并由此避开黑名单等的检测。有些黑名单实际上会针对所有开放的HTTP中继,其基于的原因是如果它们能找到这些中继,垃圾信息散布者也能够。另一种常被社区采用的方式是部署“honeypot”。一个honeypot伪装成一个假的开放HTTP代理中继,但是当垃圾信息散布者使用它时,该活动就被记录下来并被用来更新黑名单。此外,honeypot操作者还会努力辨别垃圾信息散布者不断变化的行为模式。

  阻塞所有代理

  除了使用HTTP代理黑名单之外,还可以选择自动阻塞所有被代理的请求。HTTP代理会更新某些报头,您可以检查这些报头。清单1是实现此目的的一种Apache配置方案。

  清单1. 阻塞代理服务器的Apache配置方案
     
# Apache config recipe for blocking proxy servers
# http://perishablepress.com/press/2008/04/20/how-to-block-proxy-servers-via-htaccess/
RewriteEngine on
RewriteCond %{HTTP:VIA}                 !^$ [OR]
RewriteCond %{HTTP:FORWARDED}           !^$ [OR]
RewriteCond %{HTTP:USERAGENT_VIA}       !^$ [OR]
RewriteCond %{HTTP:X_FORWARDED_FOR}     !^$ [OR]
RewriteCond %{HTTP:PROXY_CONNECTION}    !^$ [OR]
RewriteCond %{HTTP:XPROXY_CONNECTION}   !^$ [OR]
RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR]
RewriteCond %{HTTP:HTTP_CLIENT_IP}      !^$
RewriteRule ^(.*)$ – [F]

  基于成本的垃圾信息防御的社区努力

  如果从发送到发布没有任何成本的话,很难想象垃圾信息问题将会多么严重。拿我自己的书信邮件来说,其中有40%都是垃圾信息。而电子邮件更为严重,其中的90%或更多都是垃圾信息。减少电子垃圾(包括电子邮件和Web上的垃圾信息)的一种方式是给发送邮件或在Web站点发布信息的行为加上一些成本。这里的理念是让正当用户承担很少的管理费用,以此来遏制垃圾信息散布者,这样一来,他们就无法再为了发送出几千条消息或帖子而进行数百万次的攻击。有人已经就这种方式的货币成本进行过讨论,但是这种方式还是问题重重。对微小支付和信用的管理会很复杂,有可能还会代价昂贵。而且,货币价值在不同地区、不同社会阶层差异太大,因此,对西欧或北美的人看起来微不足道的一笔支出,对撒哈拉以南的非洲居民而言则是一笔不小的负担。Internet的初衷就是要成为打破数字差异的一种强大工具,所以如果要以牺牲这一初衷为代价,未免有些不幸。

  基于成本的一种更实用的垃圾信息抵御方式是强迫发送电子邮件或发布信息的人为此支付数量可观的一些CPU周期。这样一来,不管他们是坐在拉各斯(尼日利亚首都)的一个网吧中,还是在旧金山自己的家里使用笔记本,都不会因发布一个正常的帖子而为他们造成支付负担,而这却能有效抵御垃圾信息散布者,因为他们再也不能试图通过向每个站点发送一百个帖子来攻击一千个网站了。这种方式又称为“proof-of-work”模式,而其中最常用的当数“hashcash”。

  Hashcash

  Hashcash是基于成本的垃圾信息防御的一种巧妙方式。它需要用户在发布内容之前进行SHA-1哈希计算,比如通过在发布页面上的JavaScript内包括一个计算。这就确保了请求者必须补充一定数量的CPU周期才能发布,但目标站点的检查成本又很低。这基本上算是一种服务拒绝的对策。hashcash的主要问题是很多垃圾信息散布者都会使用“botnet”,或是被黑客攻击了的计算机,这些计算机已经被重新编程,会服从垃圾信息散布者的命令。这就意味着坏人并不太在乎CPU的使用,因为使用的并不是他们自己的CPU。出于这个原因,hashcash必须与其他的反垃圾信息技术联合使用。

  结束语

  如果此时,您的脑海里尽是与抵御Web垃圾信息相关的这些技巧、技术和方法,那么您就对问题的严重性和困难程度有了大致的概念。此问题应该是所有现代Web开发人员都应该重视的,因为真正的Web 2.0的理念就是要集中社会团体的力量来改进信息系统。而这总是能同时引起好人和坏人的注意力,而且您将能很快了解到坏人在这个方面的创意也很丰富,并且所借助的工具也很智能。无论何时,只要您想出一个很棒的新Web 2.0特性,您也很有可能为垃圾信息散布者打开了方便之门。本系列文章带您领略了垃圾信息以及反垃圾信息领域的错综复杂,您应该对Web上的社区所存在的问题以及同类社区如何能团结起来共同寻找问题的解决方案有了大致的概念。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐