0

我正在尝试使用这个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 回答 3

1

不好意思你没看懂我之前的回答,我改一下

因此,据我所知,您有一个登录页面表单,用户必须在其中输入电子邮件,并且有一个蜜罐来过滤机器人。

  1. 如果您正在使用该 gem,您会发现不需要将蜜罐字段添加到表单中。(我不完全明白为此使用宝石的目的,但无论如何..)

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

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

于 2012-02-29T05:59:37.220 回答
0

因此,据我所知,您有一个登录页面表单,用户必须在其中输入电子邮件,并且有一个蜜罐来过滤机器人。

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

  2. 如果您使用蜜罐过滤机器人,当机器人向控制器提交表单并填写电子邮件和蜜罐时,您只需添加一个before_filter :protect_from_spam. 如果您想在该功能中执行任何特殊操作,您也可以在控制器中覆盖其默认值。

  3. 您可以通过检查浏览器中的元素(例如使用 Firefox 上的 Firebug)来测试它,只需display: 将蜜罐的 css 从无更改为内联即可。这样,您可以填写该字段并查看在不实际更改代码的情况下会发生什么。

于 2012-03-05T01:36:11.150 回答
0

有关客户端和服务器端蜜罐教程的 安全表单和使用蜜罐的机器人的评论,请参阅此教程

于 2013-01-03T06:07:35.673 回答