要求手工输入
WEB管理人员和开发人员都需要考虑的一个常见问题,就是自动的垃圾robot,它在未保护的博客或支持回帖的其他WEB站点上大量发贴。
这个问题的典型解决方案就是使用一种所谓“CAPTCHA”图像,要求访问者读取文本的图像版本。人类能够阅读这个图像,而自动脚本则不能够。但是,这样处理也会带来可用性问题,因为盲人用户将不再那么容易使用这项功能。关于这种类型的CAPTCHA,这个方式的一种改进是为同样的信息增加一条替换记录,以用于解决CAPTCHA带来的可用性问题。
301重定向攻击
正常的站点通常也会使用脚本来重定向URL,作为一种内部链接接机制,使用如下所示的URL:
http://www.example.com/redirect.php?url=http://another.example.com
在这种情况下,redirect.php脚本将重定向到url参数所指定的URL地址。当使用301重定向时,就会出现问题。这种重定向链接被改变成指向任何其他URL,是由这个URL本身认可的。而301重定向将被解释成一次投票。黑帽SEO将从许多垃圾网站链接到这种URL,以获取更多的投票。
如果在站点中使用这种重定几脚本,就有三种解决方案来防止301攻击。
(一)使用302重定向替代301
(二)使用robots.txt排除redirect.php
(三)使用基于数据库的解决方案,让http://www.example.com只重定向到已知链接
这些解决方案任何一个都可以奏效。对大部分站点来说,最后一个通常没有必要;但是之所以在这里提到,是因为从理论上来说,存在这么一个可被社会工程师公开使用的脚本,可能被外行认为你的站点支持某些其他站点,这就是shishing。
1、使用302重定向
正如前面所讨论的,302重定向并不转移“:phishers”任何链价值,因此从垃圾制造者的角度看来没有什么用处。但是,它们还是可能被用于,稍后将讲到。
<?php
$new_url=$_GET["url"];
header('HTTP/1.1 302 Found');
header('Location: $new_url');
?>
2、使用robots.txt排除redirect.php
除了302重定向之外,也可以使用这个技术。但是,它也不能防止“phishing”。
User-agent:*
Disallow:/redirect.php
3、使用数据库驱动的解决方案
可以将URL保存起来,嵌入在脚本自身内部或者保存到数据库中,而不是嵌入在URL中可见:
<?php
$lookup_table=(
0=>'http://www.example.com/0',
1=>'http://www.example.com/1',
2=>'http://www.example.com/2');
header('HTTP/1.1 302 Found');
header('Location:'.$lookup_table[$_GET['url_id']]);
?>
这样URL看起来就是http://www.example.com/redirect.php?redirect_id=[number],这样就消除了问题。
通过这种解决方法,还可以继续使用301重定向,还可以得到好处因为301重定向作为投票计算。
内容盗窃
这个概念将在以后详细讨论。黑帽(SEO)可能使用脚本来将其他站点的部分甚至全部内容都取走也许使用RSS Feed,或者屏幕挖掘。很多人将来自不同的站点的内容再糅合在一起,形成Chris Boggs所说的“Frankenstein content”。垃圾制造者逐字逐句盗窃站点内容,要比这更甚:但是使用站点地图可以防止发表顺序的问题。
关于购买链接
由于新的焦点在于关注链接构建以获取相关链接,而不是以前所关注的页面因素,使得链接购买的新产业迅速成长。这是可以预期的,因为这是搜索引擎营销产业为了方便其工作而必然采取的。根据Google的Matt Cutts的观点,购买的链接都应该包含rel="nofollow"属性。但是,实际上显示这仅仅是Matt Cutts的一厢情愿,因为显而易见从来不会有人这么做。
我们认为购买链接是合乎常理的,只要链接语义相关。事实上,内容提供商可以拒绝将不相关的链接放在他的站点上,并且如果他们认为它相关,自然没有理由去包含rel="nofollow"属性。因此,按照我们的看法,Matt Cutts的观点并不适合于传统的营销手段,因此,如果适当地购买链接,应该不是一种黑帽技术。但是如果大量而不适当地购买,仍然有可能被搜索引擎当成垃圾网站。