在注册表单上创建蜜罐

时间:2012-02-28 02:18:21

标签: ruby-on-rails form-for invite honeypot

我正在尝试使用this gem来创建蜜罐字段,但我不确定如何实现它。表单如何知道蜜罐的哪个字段以及我在哪里指定标签?这是我用于该字段的代码,但是当我运行应用程序时,表单似乎是可见的:

= form_for(:invitation, :url => request_invite_path, :html => {:id => 'login_form', :honeypot => true}) do |form|
      = form.text_field :email, :size => nil
      = form.text_field :honeypot #This field was created to store the honeypot input
      %button{:type => "submit"} Request Invite

此蜜罐正在注册表单上使用,该表单仅询问电子邮件地址,然后隐藏了额外的蜜罐字段。我目前有一个邀请服务,所以当人们输入他们的电子邮件时,会创建一个邀请,我可以接受或拒绝它。我想要做的是摆脱邀请功能,但我想我可以将此邀请功能与蜜罐字段结合使用以阻止机器人注册。

我有没有办法跳过模型,仍然使用蜜罐字段接受或拒绝邀请?我实际上并不需要存储蜜罐数据,但我需要用它来决定是否接受邀请。

所以它应该像这样工作:

  1. 用户进入着陆页
  2. 用户看到包含的注册表
    1. 电子邮件地址输入框
    2. 隐藏的蜜罐字段
  3. 如果机器人注册它将填写蜜罐,所以当 正在创建邀请我可以自动接受那些不填写的邀请 蜜罐和那些做的将被拒绝。
  4. 还有一件事,我如何测试蜜罐字段以查看它是否正常工作?我想填写它,看看我的代码是否正在做它应该做的事情。

3 个答案:

答案 0 :(得分:1)

我很抱歉你不理解我以前的答案,我会改写它

所以从我得到的,你有一个登陆页面表格,用户必须输入一个电子邮件,并有一个蜜罐过滤机器人。

  1. 如果您正在使用该gem,您将看到您不需要将蜜罐字段添加到表单中。 (我并没有完全看到使用宝石的目的,但无论如何......)

  2. 当您向表单添加文本字段并希望它不可见时,您需要自己使其不可见(这就是文本字段的工作方式)

  3. 如果您使用蜜罐过滤机器人,当机器人将表单提交给控制器,并且已经填写了电子邮件和蜜罐时,您只需添加before_filter :check_honeypot,并且函数检查蜜罐字段是否为空,如果不是,那么你有一个机器人,对吧?所以自动拒绝

答案 1 :(得分:0)

所以从我得到的,你有一个登陆页面表格,用户必须输入一个电子邮件,并有一个蜜罐过滤机器人。

  1. 如果您正在使用该gem,您将看到您不需要添加 你自己的蜜罐领域的形式。当你实现它时 在html选项中:honeypot => true,它会自动创建一个 隐藏文本字段,带有适当的可访问性标签。

  2. 如果您使用蜜罐过滤机器人,那么当机器人提交时 表单到控制器,并填写了电子邮件和 蜜罐,你只需添加一个before_filter :protect_from_spam。如果 你想做什么特别的功能,你可以覆盖 它的默认值也在控制器内。

  3. 您可以通过检查浏览器中的元素来测试它(使用 只需更改css display:,就可以使用Firefox上的Firebug 蜜罐从无到内联。这样你就可以填写 现场,看看当你没有实际改变时会发生什么 代码

答案 2 :(得分:0)

请参阅此一个用于客户端和服务器端蜜罐教程 Secure Forms and comments from bots using Honeypot

相关问题