chh / stack-honeypot
为垃圾邮件机器人设置表单蜜罐,并将它们重定向到空白页面
v1.0.1
2014-01-23 08:57 UTC
Requires
- php: >=5.4.0
- symfony/http-foundation: ~2.1
- symfony/http-kernel: ~2.1
Requires (Dev)
- stack/callable-http-kernel: ~1.0@dev
- symfony/browser-kit: ~2.0
- symfony/css-selector: ~2.0
This package is not auto-updated.
Last update: 2024-09-24 01:47:45 UTC
README
将 Rack::Honeypot 移植到 PHP 的 Stack。
安装
composer require stack/honey-pot:~1.0
用法
将 HttpKernelInterface 应用程序包裹在一个 CHH\Stack\Honeypot 实例中,或者将其添加到中间件堆栈中。
<?php $options = []; $app = (new Stack\Builder) ->push(CHH\Stack\Honeypot::class, $options) ->resolve($app);
不使用 builder
$app = new Stack\Honeypot($app, $options);
从 Rack::Honeypot
此中间件充当垃圾邮件陷阱。它在每个输出的 <form>
中插入一个文本字段,垃圾邮件机器人会真正想填写,但实际上该字段不被应用程序使用。该字段通过 CSS 对人类隐藏,并包含一个屏幕阅读软件的警告标签。
在 <body>
中
<form>
<div class='phonetoy'>
<label for='email'>Don't fill in this field</label>
<input type='text' name='email' value=''/>
</div>
[...]
在 <head>
中
<style type='text/css' media='all'>
div.phonetoy {
display:none;
}
</style>
然后,对于传入的请求,中间件将检查文本字段是否被设置为意外的值。如果是这样,这意味着垃圾邮件机器人已经修改了字段,垃圾邮件机器人将被踢到死胡同的空白页面。
您可以将一些选项传递给构造函数(或 Stack Builder)
class_name
是分配给蜜罐父 div 的类。默认为 "phonetoy",是 honeypot 的一个字谜。label
是对 CSS 禁用的用户的显示的警告标签。默认为 "不要填写此字段"。input_name
是表单字段的名称。如果您修改它,请确保这会吸引垃圾邮件机器人。默认为 "email"。input_value
是表单字段的值,只有垃圾邮件机器人会修改它。默认为空白。always_enabled
(默认为true
)如果不想将陷阱插入到应用程序返回的所有响应中,请将其设置为false
。只需将X-Honeypot: enabled
添加到您的响应头中,即可为该响应启用陷阱。
许可证
查看 LICENSE.txt。