防灌水的几种机制

总结了一下处理防灌水的几种机制,
1. 写入客户端Cookie,客户端每次发帖后,写入Cookie中一个postTime值=now()
,然后,每次提交发布信息时进行验证,如果Cookie中的postTime小于15秒,则拒绝发布信息。
优点:可以进行客户端的校验,省去验证码的服务器端校验造成的服务器端的负载压力,
缺点:如果客户端每次都清空Cookie值,则很难处理,
建议:可以结合验证码方法进行双重验证,避免客户端频繁发布信息
2.中心思想:使用数据库的Inserted触发器来屏蔽博客上的垃圾广告留言
自己架设博客,经常会有垃圾留言,俗称Spam,许多是广告留言,如何删除和屏蔽这些留言是令人头痛的问题。我的这个博客的源程序中没有屏蔽广告留言的功能,只有图形数字签名认证。
在 网上找了半天,有添加算式,让留言用户填写结果的等等,需要修改Blog源程序,比较麻烦。突然我想用SQL SERVER中的触发器来屏蔽是瞒不错的, 比较简单易行,只要几行代码就可以搞定。说干就干,在SQL Server2005中,打开SQL Server 2005的 management studio,连接到数据库,选择自己的Blog数据库,单击表,单击需要屏蔽留言的数据表,右键单击触发器,选择新建触发器。在 修改代码后,单击执行按钮即可生成该触发器。
下面是我新建的触发器的源代码

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author:        <Author,,Name>
-- Cr&#101;ate date: <Cr&#101;ate Date,,>
-- Description:    <Description,,>
-- =============================================
Alt&#101;r TRIGGER [del&#101;teguanggao] on [dbo].[blog_Comment]
AFTER Ins&#101;rt
AS
IF Exists  (sel&#101;ct * from Ins&#101;rted wh&#101;re comm_AutoKEY=1 o&#114; comm_Author like &#39;世纪之声翻译 %&#39; o&#114; comm_Author like &#39;四海一心%&#39; o&#114; comm_Author like &#39;机票% &#39; o&#114; comm_postip like &#39;220.175.64.%&#39; o&#114; comm_postip like &#39;218.242.67.%&#39; o&#114; comm_postip like &#39;218.242.67.%&#39; o&#114; comm_postip like &#39;60.1.119.%&#39;)
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with Sel&#101;ct statements.
SET NOCOUNT ON;
rollback transaction
-- Ins&#101;rt statements for trigger here
END

如果你是第一次建立,不是Alter TRIGGER ,是Create TRIGGER.
该触发器在Insert事件发生后触发,也就是说,在有人向你的博客上留言是触发。
如 果已插入的记录符合上述条件,数据库将进行回滚。也就是无法插入符合该条件的记录。你可以根据垃圾留言的作者或IP进行设置。上面 Comm_autokey,Comm_author,Comm_postip是留言数据表的字段,该条件禁用了自动发贴,禁用了作者为世纪之声翻译,IP 是218.242.67等的留言。
当然,这种反SPAM的方式是亡羊补牢式的。
如果你的后台数据库式Ms sql 2000,也可采用这种方式。
3.

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏