我正在尝试使用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
此蜜罐正在注册表单上使用,该表单仅询问电子邮件地址,然后隐藏了额外的蜜罐字段。我目前有一个邀请服务,所以当人们输入他们的电子邮件时,会创建一个邀请,我可以接受或拒绝它。我想要做的是摆脱邀请功能,但我想我可以将此邀请功能与蜜罐字段结合使用以阻止机器人注册。
我有没有办法跳过模型,仍然使用蜜罐字段接受或拒绝邀请?我实际上并不需要存储蜜罐数据,但我需要用它来决定是否接受邀请。
所以它应该像这样工作:
还有一件事,我如何测试蜜罐字段以查看它是否正常工作?我想填写它,看看我的代码是否正在做它应该做的事情。
答案 0 :(得分:1)
我很抱歉你不理解我以前的答案,我会改写它
所以从我得到的,你有一个登陆页面表格,用户必须输入一个电子邮件,并有一个蜜罐过滤机器人。
如果您正在使用该gem,您将看到您不需要将蜜罐字段添加到表单中。 (我并没有完全看到使用宝石的目的,但无论如何......)
当您向表单添加文本字段并希望它不可见时,您需要自己使其不可见(这就是文本字段的工作方式)
如果您使用蜜罐过滤机器人,当机器人将表单提交给控制器,并且已经填写了电子邮件和蜜罐时,您只需添加before_filter :check_honeypot
,并且函数检查蜜罐字段是否为空,如果不是,那么你有一个机器人,对吧?所以自动拒绝
答案 1 :(得分:0)
所以从我得到的,你有一个登陆页面表格,用户必须输入一个电子邮件,并有一个蜜罐过滤机器人。
如果您正在使用该gem,您将看到您不需要添加
你自己的蜜罐领域的形式。当你实现它时
在html选项中:honeypot => true
,它会自动创建一个
隐藏文本字段,带有适当的可访问性标签。
如果您使用蜜罐过滤机器人,那么当机器人提交时
表单到控制器,并填写了电子邮件和
蜜罐,你只需添加一个before_filter :protect_from_spam
。如果
你想做什么特别的功能,你可以覆盖
它的默认值也在控制器内。
您可以通过检查浏览器中的元素来测试它(使用
只需更改css display:
,就可以使用Firefox上的Firebug
蜜罐从无到内联。这样你就可以填写
现场,看看当你没有实际改变时会发生什么
代码
答案 2 :(得分:0)
请参阅此一个用于客户端和服务器端蜜罐教程 Secure Forms and comments from bots using Honeypot