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

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

  Web上的垃圾信息已经成为了现代Web开发人员最大的威胁。在如何搞破坏以及如何在所有能获得的Web 2.0页面上传播广告方面,这些 “坏家伙” 也变得越来越复杂。更麻烦的是,垃圾信息还常被用来散布恶意软件。与垃圾信息的较量已经开始,Web开发人员必须及时掌握一些可用的基础工具来对付Web站点上的垃圾信息。本系列文章由两部分组成,提供了有关反垃圾信息技术的详细指南。本文是其中的第一篇文章,介绍了如何评测一个访问者是否是垃圾信息散布者以及如何组织站点工作流来阻止垃圾信息。

  在1994年,National Science Foundation解除了对在Internet上进行商业宣讲的禁令。在当时,电子邮件和Usenet是主要的交流平台,而诸如Gopher这样简单的发布系统则试图建立更广泛的用户群。Web尚未出现。那年,一个名为Canter & Siegel的律师事务所在Usenet上发布了第一个面向大众的商业广告垃圾信息,它雇了一名Perl程序员来为其 “绿卡彩票” 服务生成广告,这些广告随后被爆炸式地扩散到了6,000多个新闻组。他们成了名,但同时也招来非议。他们随即开始为他人提供类似的垃圾信息,宣扬垃圾信息的好处并撰写了“互联网市场营销”方面的书。从那之后,几乎没有一个在线论坛幸免于不受欢迎的商业广告。随着Web逐渐成为人们进行在线谈论的重要途径,在Web 2.0技术为人们能在Web畅所欲言逐渐敞开方便之门的时候,垃圾信息问题也复仇般地滋长起来了。

  有些时候,Web垃圾信息的害处无关痛痒,但更多时候,它都是十分有害的。垃圾信息散布者通常都不会满足于只发布一两个消息,而是会向论坛狂发消息,直至垃圾消息淹没了本来的主题。有时,垃圾信息包含色情或反社会的消息,会带来更大的负面影响。大多数搜索引擎都会将带有这类消息或提供与这类垃圾信息相关的站点链接的页面减值,这就意味着垃圾信息能减少搜索引擎的优化处理。最终的后果往往是Web发布者往往要在反垃圾信息方面浪费大量资源,并会占用处理其他任务的时间。

  Web垃圾信息有多种格式,包括:

  ·wikis上的垃圾文章和破坏性文章
  ·Weblog上评论性质的垃圾信息
  ·论坛、问题跟踪器和其他讨论论坛内的垃圾帖子
  ·引荐垃圾信息(垃圾信息站点假装将用户引荐到列有引用信息的目标站点)
  ·社会网络上的虚假用户条目

  处理Web垃圾信息非常困难,但是Web开发人员如果忽视垃圾信息的预防,结果受伤害的还是开发人员自己。在本文以及后续的第2部分,我将展示对付各种Web垃圾信息的技巧、技术和服务。

  垃圾信息散发者的行为

  人们进行的正常网络行为在时间和内容方面常常具有不规则性。而垃圾信息通常都是由程序创建的,比如Canter & Siegel就是利用Perl脚本向6,000多个Usenet组发帖的。因此,有时候,可以使用这些程序的机制来对付垃圾信息散布者。比方说,在需要注册的情况下,可以使用各种警告标志来标记一个帐户以进行进一步的检查。比如,如果该帐户来自顶层的域,比如.ru、.br、.biz,那么它就与垃圾信息散布者联系很紧密。如果一个帐户被标记了,可能就需要将该帐户发的一些帖子暂时延后,待检查了所发的内容之后再放行。

  防洪控制

  Wiki、Weblog和论坛垃圾信息散布者通常都会在几秒内发送数十个请求,据此,可以限制某个用户或IP地址在某个时间间隔内所能发送的请求数。这种技巧也被称为防洪控制。同时,还要确保以这种方式进行的请求控制是跨整个站点,而不是单单一个页面的。

  这些行为评估技巧还可以应用于本文下一节中来防止Web上除垃圾信息之外的其他滥用。比如,假设您托管了一个Webmail服务,垃圾信息散布者可能会试图大量创建帐户,然后利用这些帐户发送垃圾信息,再比如,假如您托管了一个在线竞拍站点,有人可能就会编写程序来操纵整个竞拍过程。总之,只要有注册新用户的系统存在,有些用户就会试图通过自动注册达到别有用心的目的。总的来说,这些技术可帮助Web开发人员确保使用其服务者均是正当用户。

  工作流控制

  很多垃圾信息都来自机器人程序,在使用站点方面,它们往往具有某些独特的特点,因此您可以利用这些特点。图1总结了在提交消息或评论以便将其添加到站点时典型的人、机工作流。

                  

  图1. 典型的人、机工作流
 
  机器人工作流一般径直进入POST请求,因此通过检测典型的机器人工作流可以禁止大量的垃圾信息。

  表单变换

  您可能要问了,主表单是否由请求者加载。一种检查方式是以可视或非可视(对用户而言)的方式变换表单的某些方面。通常非可视的方式是变换表单字段的名称。比如,您可能会通过字段名content_081010_68_45_76_45(使用了日期、用户IP以及其他基于基本名称的类似修改)向一个用户发送具有主要内容的文本区域。最好不要允许一个变换字段名被重用。也可以进行可视变换,比如在其他模式表明所使用的这个IP是可疑的时候,要求某些用户在发布消息时选择一个复选框。

  nonce测试

  一个nonce就是针对包含表单的某个页面视图而生成的一个难以猜出的值。之后,再在表单提交中要求该nonce作为其中的一个字段。如果机器人程序径直去POSTing这个表单提交,它将不会完成此HTML页面的加载,因此也就不会知道此nonce所预期的值。有很多方式可以对nonce测试进行细节调优。无论在何种情况下,都要确保nonce不能被重用,否则垃圾信息散布者就会很容易破解它。最好是使用IP地址和页面请求发生时的日期或完整时间以便生成和验证此nonce。

  检测JavaScript

  有些机器人程序会试图通过加载页面并阅读nonce来破解nonce测试。有了所需信息后,粗心的垃圾信息散布者常常会让机器人程序立即就发送POST。因此,可以标记那些在表单加载后立即发生的提交,这可以通过使用这样一个时间间隔实现,在这个时间间隔内普通人是根本无法如此快速地完成表单输入的。这与防洪控制测试也是相关的。即便机器人程序再小心,它们通常都不会在表单页面上运行任何JavaScript。您可以以多种方式利用这一点。首先,最好不要在此表单页面的实际内容内生成这个nonce,而是可以通过来自表单页面的一个次要的JavaScript请求来生成。可以设置用户首次向主要的内容字段输入数据时的事件处理程序,如图2所示。

              

  图2. 使用JavaScript改进nonce测试
 
  这里的主要问题是有些用户可能会禁用JavaScript,并且实际上有些公司规定也是这么要求的,所以应该为用户提供备用的途径来进行身份验证,比如只对不调用JavaScript的用户使用表单验证。但是某些垃圾信息散布者会使用浏览器引擎内的脚本启动攻击,所以他们的确会调用JavaScript。因此,可以使用JavaScript测试作为检测垃圾信息的一种衡量因素,而不是绝对的判断依据。

  测试H.Q.(human quotient)

  对付Web垃圾信息的一种很常用的方式是nonce测试的一种改良。做法是在post表单包含某种可视测试,这种测试对人而言很容易,对机器人程序而言则很复杂。最常见的一种方法是CAPTCHA。在这种测试内,您给出的是一个代表某种数字符号的图像,用户必须读懂并在表单字段内输入这些符号。垃圾信息散布者常常会使用视觉字符识别来破解CAPTCHA,所以通常我们需要严重歪曲这些图像。图3是CAPTCHA图像的一个例子。

                     

  图3. CAPTCHA图像要求用户回答“smwm”
 
  虽然在本例中图像有所歪曲,垃圾信息散布者仍然能破解CAPTCHA,所以需要更高程度的歪曲,如图4所示。

                   

  图4. CAPTCHA图像要求用户回答“following finding”
 
  这里的问题有几个。其一是,为了战胜垃圾信息散布者,CAPTCHA需要很高程度的歪曲,这样一来,人也很难看懂。有些人,比如视觉障碍人士,根本就看不到CAPTCHA图像,所以这个技巧的适用性比较差,在某些情况下甚至是不合法的。如果忽略这些困难不谈,CAPTCHA已经成为了时下最流行的垃圾信息防治工具之一。

  文本确认

  一种类似的、同时又不会影响访问性的技术是向用户提出一个随机的文本问题。如果站点针对的是一个特定的领域,所提的问题可能会需要回答者具有对该领域的一些基础知识。比如,在一个医疗信息和服务站点,您可能会提出这样的问题,“人体内与呼吸相关的主要器官是什么?”,预期的答案自然是“肺”。对于这种方式,至关重要的一点是提出的问题要多样,并且要格外注意措辞以便让人能回答出来,而机器人程序则基本猜不到。

  结束语

  您可以对本文中所谈论的这些技巧和技术进行改进,比如,您可以强迫用户预览他们要发的信息。通过添加这一额外的工作流阶段,可以捉获一些垃圾信息散布者,并且如果您足够用心,比如用JavaScript为一些用户自动化预览,那么即便是有些不方便之处也不会阻碍用户参与的积极性。应该根据工作流适当应用CAPTCHA、表单变换、nonce等,并且采用的手段应使大多数合法用户觉察不到,但却让垃圾信息散布者束手无策。

  评估行为和管理工作流虽能减少垃圾信息,却不能消除它们。例如,一些垃圾信息散布者会雇一些人来专门破解本文中所讨论的这些技巧(有时又称其为 “机械土耳其人” 攻击)。他们常常在人力成本低的地方雇人,让这些人专门到目标站点手工留下垃圾信息。要解决机械土耳其人的问题和对付复杂的垃圾信息机器人程序,需要借助由与您一样憎恨垃圾信息的人所组成的社区的力量。我将在本系列下一期文章中介绍如何能做到这一点。

  关于作者

  Uche Ogbuji是Zepheira, LLC的合伙人,这家公司专门提供下一代Web技术解决方案。Ogbuji先生是4Suite的首席开发人员,这是一种用于XML、RDF和知识管理应用程序的开放源代码平台;也是Versa RDF查询语言的首席开发人员。他是一位出生在尼日利亚的计算机工程师和技术作家,目前定居在科罗拉多的博尔德。

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐