Loading...

一个简单的反spam的思路

2007-10-31 14:50:31 发表于Wordpress, 网站技术 本文链接: 一个简单的反spam的思路

收到epile的留言,顺着留下的链接找到了花儿开了这篇文章,写的是一个关于如果防止spam的新思路,感觉还挺有道理,但是经过思考之后比较怀疑这样的方式是否可行,可能仅仅是一个治标不治本的方法,并且用了庞大的jquery会拖慢整个站点的速度。所以我这里也写了一个反spam的新思路,供大家参考。其实是一个简单的思路,基本思想就是将你的留言处理方式特殊化。

我没有写过真正的spam程序,但是在大学的时候曾经用简单的方法绕过chinaren校友录的javascript验证,成功的进行“多彩”留言(现在不行了)。从这点看来,想绕过客户端的限制是一件比较容易的事情,所以ajax防止spam的方式仅仅只能针对人工spam。不能防止程序自动spam,除非我们假设这个spam程序会这样做:1.打开你的页面;2.找到填写留言和名字的表单域(ajax防止spam的方式就是想在这里将spam卡住);3.填写好用户和广告评论;4.模拟用户提交评论表单。如果spam程序真是这样,那么恭喜你,在客户端可以很容易的控制住spam。但是大部分spam不可能会这样做。因为对于主流的程序,如wordpress、drupal,或者主流的bsp,spam程序早已清楚留言的表单有多少域,这些域的含义代表什么,并且也知道对于表单域赋予不同的值便能对不同的文章进行评论。所以spam程序不需要打开你的页面,它完全可以自行制造一个表单(因为你有什么域它都一清二楚了),然后伪造http头信息,假装是从web发送数据,直接将数据post到处理评论的程序,所以前面客户端用ajax做的一切努力都白费了。

因此,目前最有效能防止机器spam的还是图形验证码,当然那些可以通过路径都能看出来的验证码是没有用的。

既然spam程序在知道表单域的情况下可以轻而易举的绕过客户端限制,那么如果你将表单进行个性化,spam的程序便没有办法了,因为他不可能专门为你的表单而去写一个spam程序,这样还不如人工spam。所以这个简单的反spam思路便出现了:在你的评论表单中添加一个独一无二的自定义域,然后在处理留言的程序中判断这个域是否存在,不存在,则留言不成功,这样针对同类程序的spam程序便宣告失败。至于定制域的出现可以采用ajax动态载入,这样可以防止spam程序通过网页恶意留言。

目前我感觉此方案可行,因为很多朋友那千年不便的验证码便能成功堵住spam,对于wordpress可以考虑写成插件。

总之,不要对客户端防spam抱有太大的希望。

标签:,
发表于 2007-10-31 14:50:31 目录:Wordpress, 网站技术 [RSS 2.0] 你可以发表评论, 或者从您的网站 trackback
  • 相关阅读
  • homezz 美国专业主机商
    feed url
    上一篇: « PR GGADS AND LINKS
    已经有6位大师动手指导 拒绝低俗
    • 1楼 joecen 在2007.10.31 15:24发表评论如下: 回复

      添加一个“自定义域”和“图形验证码”有什么区别呢?

      区别在于不用手动输入验证码,可以通过鼠标移动事件来验证是否是人工还是spam,没有本质的区别

      • 2楼 偶爱偶家 在2007.10.31 16:33发表评论如下: 回复

        你说的加那个域的方法我已经试过了, 刚开始是有效的, 但不超过1个小时就恢复原样了

        我打算域的名字和值都以session的方式出现,这样在不同时段域不是一样的,和验证码相比,仅仅是不需要手工输入数字而已,如果这样还继续有,那就只能图形验证了,一直没有做的原因是这样或许也会挡住别人正常的ping。

        • 3楼 偶爱偶家 在2007.10.31 18:27发表评论如下: 回复

          我本来也是想加一个随机域的, 不过我怕到时候不知名的错误导致正常的留言也不能留, 就加了一个固定域, 结果还是没能spam掉. 我感觉加随机域应该也不行. 因为刚开始能够spam表明垃圾评论程序没能及时调整方向, 可在一段时间之后就突然可以了, 我估计是分析网页结构了. 所以在能够分析网页结构的情况下, 我感觉任何spam是没有意义的. 所有的spam只能放在程序无法探测的部分, 也就是后台服务器程序中, 验证码就好在这里呀. 除非他进行ocr识别, 那样的成本也太高了

          当然,终极方式还是用图片,而且是用模糊的图片,不过对于个人blog,恐怕不用那么复杂了,呵呵!

          • 4楼 偶爱偶家 在2007.10.31 18:29发表评论如下: 回复

            你的ajax评论时用什么来实现的? 感觉很智能化啊, 能够自动增加楼层

            自己写插件实现的阿,自动楼层只能增加一次,这个东西整了很久了。

            • 5楼 帕兰卓一得 在2007.11.04 14:38发表评论如下: 回复

              加你G也没反应。你用的回复插件是哪一个?

              半自动插件,小O好像打算要把它写成插件,我已经wp疲劳了,开始懒惰了

              • 6楼 表单域的名称可以动态的 在2008.09.16 09:14发表评论如下: 回复

                这样不就解决了

                评论分页: 1
                (Required)
                (Required, not published)
                如果留言未显示无需重复留言,我将为你恢复!