在博客中屏蔽垃圾留言的简单方法_ruby专题

垃圾留言俗称 Spam,就是到处在留言框里发垃圾广告的那些,相信大多数人都见识过。以前使用 WordPress 的时候,因为装了防 Spam 的插件,可以屏蔽掉绝大多数的 Spam。但是自从上个月从 WordPress 迁移到新的博客平台后,第一天上线就遭遇了几个Spam,全都是国外的推广的广告什么的。博客的访问量本身就很小,如果每天都来几条 Spam,太煞风景了,手工删除也太浪费时间,而且又是自己写的小系统,也不可能有什么插件可选,只能自己想办法解决了。

看到有很多网站都是加个验证码来解决这个问题的,因为 Spam 很难从图片中识别出正确的验证码,但是对于正常的留言者来说,又凭空多了一个步骤,那么除此之外还有什么方法能屏蔽这些 Spam 呢?

仔细分析一下,正常的留言应该是人类通过浏览器提交数据到我们的服务器,而 Spam 通常都是由固定的程序在互联网上扫描评论表单,伪造表单中的数据,然后判断表单的action,然后将数据 POST 到这个action上来。也就是说,Spam 发送方都没有正常地通过浏览器访问过我们的表单页面,也就是说,页面上的 JavaScript 都没有执行过咯,明白这个特点,那问题就迎刃而解了。

首先,我们可以在表单中放一个隐藏的文本框,这个文本框对正常用户来说是不可见的:

<div style="margin:0;padding:0;display:inline">
  <input id="checkspam" name="checkspam" type="hidden" value="Hello Ruby" />
</div>

然后再写一小段 JavaScript 代码来改变这个文本框的值:

jQuery(document).ready(function($) {
  $("#checkspam").val('abcdefg');
});

由于对于 Spam 发送者来说,这段 JavaScript 是没有被执行的,那么接下来要做的事情就是在服务端判断这个隐藏文本框的值了,如果不是 JavaScript 所更改后的值,那么这条留言无疑就是 Spam 了(排除正常用户的浏览器禁用 JavaScript 的情况)。

下面以 Ruby on Rails 应用为例:

if params[:checkspam] == "abcdefg"
 @comment.save
else
 # It's a spam...
end

其实,这个隐藏文本框的作用跟验证码是一样的,只不过这个验证码是由 JavaScript 帮忙自动输入了。

用了这个方法至今一月有余,目前没有再发生过 Spam 的情况。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索屏蔽
留言
朋友圈屏蔽能看到留言、qq空间怎么屏蔽留言板、离线请留言是不是屏蔽、ruby 垃圾回收、怎么屏蔽微信朋友留言,以便于您获取更多的相关知识。

时间: 2024-09-10 18:04:54

在博客中屏蔽垃圾留言的简单方法_ruby专题的相关文章

Ruby中操作字符串的一些基本方法_ruby专题

 在Ruby中的String对象持有和操纵的任意序列的一个或多个字节,通常表示人类语言的字符表示. 简单的字符串文本括在单引号(单引号字符).引号内的文本的字符串值: 'This is a simple Ruby string literal' 如果需要内放置一个单引号,单引号的字符串文字,在它前面加上一个反斜杠Ruby解释器不认为终止字符串: 'Won\'t you read O\'Reilly\'s book?' 反斜杠也可以转义另一个反斜杠,这样第二个反斜杠本身不是解释为转义字符. 以下是

实例讲解Ruby使用设计模式中的装饰器模式的方法_ruby专题

概述       若你从事过面向对象开发,实现给一个类或对象增加行为,使用继承机制,这是所有面向对象语言的一  个基本特性.如果已经存在的一个类缺少某些方法,或者须要给方法添加更多的功能(魅力),你也许会仅仅继承这个类来产生一个新类-这建立在额外的代码上.       通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法.但是这种方法是静态的,用户不能控制增加行为的方式和时机.如果  你希望改变一个已经初始化的对象的行为,你怎么办?或者,你希望继承许多类的行为,改怎么办?前一个,只

Ruby实现命令行中查看函数源码的方法_ruby专题

如果要查看 ActiveRecord 的 update_attribute 函数的源代码,一个比较常见的方法是直接在 Rails 源码中搜索 def update_attribute.博客 The Pragmatic Studio 介绍了一个更方便的技巧,在 Ruby 命令行中就能启动编辑器直接访问. 通过 Object#method 方法可以获得 update_attribute 方法的对象,而 Method#source_location 则返回这个方法定义的文件和位置.有了这个信息后,就能

Ruby中检测Gem是否安装的方法_ruby专题

最近参加七牛的demo大赛,决定使用ruby开发.于是遇到了一些疑问,然后解决了,这里记录一下. 在Ruby中,Gem是一个很常见的东西,其相当于插件,Ruby有很多很棒的gem,避免了我们重复造轮子,我的demo中需要安装gem,但是为了更加实现好一些,先检测gem是否已经安装,如果没有安装,在继续安装,否则不安装. 于是,怎么在Ruby中检测gem是否安装呢,其实也很简单,直接上代码就可以了.不需太多解释.begin-rescue-相当于java中的try catch. 复制代码 代码如下:

博客中国将是电子商务的另一个繁荣时代

硅谷网讯 百度刚刚上线了自己的生活平台,我们从平台上线时百度公布的一些数据,http://www.aliyun.com/zixun/aggregation/11249.html">博客中国http://zs.chinaboke.cn看到其中蕴含的网民需求:百度大概每天有7亿次左右的检索,其中和生活消费相关的大概有4成,这4成中包括两部分:一部分是"商品信息",对应的是网络购物,大概占3成,另一部分则是更宽泛的生活服务信息,类似婚庆.教育.娱乐等,占到了7成.这说明一点:

第21天,慎重处理博客中的负面评论

第21天,慎重处理博客中的http://www.aliyun.com/zixun/aggregation/11885.html">负面评论 前几天,一位朋友找到我,希望我对博客中的负面评论的解决给一些建议,他不知道直接删除是不是合适. 其实类似情况很多人在经营博客中会遇到.这时候我们首先是要分清负面评论的类型,它们是批评企业产品质量有瑕疵?是批评服务不佳?是批评流程上管理不当?是批评企业本身就是不诚信或者违法?我们在分清了问题类型以后,就要坦然站出来给予回复,并且越快越好. 我们一起来看一

雅虎被收购后,Tumblr 前途未卜,准备在所有博客中引入广告

  7月25日,Verizon 以 4.82 亿美元收购了雅虎,一起被收购的还有雅虎多年前收购的轻博客应用 Tumblr.两次易主,Tumblr 的命运将会如何? 今天,Tumblr 默默在官方发布声明称,将会在网站上推出新的广告项目,所有用户的博客中都将出现广告.虽然 Tumblr 没有透露更多细节,但是这是早期 Creatrs 项目的扩展,Creatrs 直接将广告主和 Tumblr 用户联系起来,而不是将广告主与第三方影响者结合起来. Tumblr 表示所有的博主都有机会在自己的博客中运行

企业博客中的互动是怎么完成的?

在给一些企业讲课的时候,我经常向大家讲,http://www.aliyun.com/zixun/aggregation/8312.html">企业博客需要三方面的要素才能做好,第一是内容,第二是传播,第三就是互动.其中的互动容易被企业忽略的,其实它很重要.好的互动可以让读者转化为自己的客户.合作者.或者帮助自己宣传的人.我们来看看下面这个案例,它可以说明一个好的互动是怎么完成的. . (北京酷绅公司) . 北京酷绅公司的型牌男装网是一个很有特点的反传统的网站.比如衬衫,过去在成衣工业时代,

金莎博客匿名“无耻”自夸留言 遭网友声讨

"私底下你好像个小男生好可爱"."好喜欢你!我们全班都爱你"."金莎写的文章好有feel,美女还充满才气".这样留言是出现在金沙的博客里的,可惜,这些赞美之词并不是粉丝的留言,而是金莎在自卖自夸.日前,很多网站都出现了揭露金莎在自己的博客中匿名夸自己的事情,众 网友对此表示不满. 博客系统很诚实 这些自卖自夸的留言都是在2005年发布的,也就是金莎博客刚刚开通的时候.那时候,金莎刚刚进入娱乐圈不久,正处在积攒人气的阶段.金莎表示,当时比较幼稚,很