Roller如何拒绝恶意评论

如何界定恶意评论?Roller使用三个变量来判定,分别是:

1、用户的ip;

2、单位时间;

3、单位时间内评论的最大次数;

 

 如果某个ip在单位时间内评论的次数大于指定的值,则将此ip加入黑名单。

 

实现过程如下:

在Roller中,关于评论处理是通过一个CommentServlet来处理的,CommentServlet在握住一个GenericThrottle对象,CommentServlet初始化时,读入上面所说的两个变量:单位时间和最大评论次数。

 

GenericThrottle类的作用是创建一个缓存,将每次提交的请求根据ip地址记录一次,并累计和缓存起来。

 

CommentServlet根据GenericThrottle的累计和处理结果,见ip加到黑名单中。

 

那么如何将ip加入到黑名单中呢?IPBanList类是做这个工作的。IPBanList在初始化的时候会读入一个配置项,根据此配置项读写一个文本文件。如果这个文件不存在或者不能读,则前面的逻辑都没有效了。

 

IPBanList有一个添加黑名单的方法和一个判断某个ip是否在黑名单中的方法。

 

加入某个ip已经被加到黑名单中了,Roller如何来防止这个ip再提交请求呢?IPBanLifter类会拦截所有关于评论的请求,如果这个ip再提交这个过滤器将立即跳到错误页面。

 

完!

你可能感兴趣的:(ol)