网站敏感关键字过滤的几种方案分析

 
敏感字过滤对于一个网站来说还是很有必要的,特别是对于一个网站内容主要为注册会员所输入的信息的网站(如管制非常严格的论坛)显得尤为重要

PS:本人写的一个关键词过滤类:网站关键词过滤代码示范

最近手头工作正好需要对会员做的一些输入做一些关键字过滤,因此把本人的一些心得记录如下:

通常解决方案有如下几种:

1:数据入库前替换
思路:将敏感关键字存入文件,或是写入文件,对于需要过滤的数据,使用正则替换,将数据种出现的关键字替换为入“*”或“x”之内特殊符号,然后保存入数据库
优点:简单、方便、几行代码即可解决问题
缺点:灵活性差,敏感字定义不好,会给普通用户带来使用麻烦,另外如果关键词发生更改,更改前发布的内容也无法再行更新;

2:数据显示时替换
思路:当数据需要显示时,进行正则替换为特殊符号
优点:较灵活,起作用的始终是最新关键词库
缺点:敏感字定义不好,会给普通用户带来使用麻烦,效率较低,和方案1相比,方案1只需要在生成数据时执行一此替换即可,二方案2则需要每次显示时都进行一次扫描

3:审核处理
思路:若数据中包含敏感字,则不发布该数据,并通知管理员审核,审核通过后方正常发布
优点:能解决某些意外使用敏感字的情况
缺点:管理员的工作负担大,而且若是审核不实时,会造成会员因无耐心等待审核,从而重复发文章的现象

4.提醒更换
思路:若数据中包含敏感字,则提醒会员处理,直到处理到没有关键字了,方放行通过
优点:因误用关键字带来的阅读麻烦得到解决,
缺点:居心叵测会员在发布某些违禁信息时,可以更方便的得到反馈,而做一些简单处理,得到放行通过(如:AA为违禁字,可改为A A,A*A等),从而给网站带来不利影响

最后经过项目组的讨论,采用了一种方案3和4的折中的办法:

5.提醒更换后审核处理
思路:若数据中包含敏感字,则提醒会员处理,直到处理到没有关键字了,方放行通过,在通过后,信息即发布成功,但发布后将该信息加入需要审核的数据表,提醒管理员此信息可能包含违禁字样
优点:1.因误用关键字带来的阅读麻烦得到解决
      2.对于前台用户来说,自己发布的信息需要审核处理是不可知的,因此若是数据信息被删,用户也认为是管理员有足够的人力通过浏览所有信息发现本条违禁信息,加大了威慑力
      3.虽然用户通过在关键字中间加空格类的方法可以依旧发布敏感字信息,但这样的数据能迷惑我们的系统检索,自然也能暂时逃过其他机构的系统检索,留给管理员更多的时间去发现处理
缺点:关键词发生变动后,以前发布的信息无法更新(但一般来说做关键字排除大家也都不会太去在意以前发布的信息)

下次再谈这些方案的具体实现办法

没有评论: