chh/stack-honeypot

为垃圾邮件机器人设置表单蜜罐,并将它们重定向到空白页面

v1.0.1 2014-01-23 08:57 UTC

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 实例中,或者将其添加到中间件堆栈中。

使用 stack/builder

<?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