PHPackages                             middlewares/honeypot - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. middlewares/honeypot

ActiveLibrary[HTTP &amp; Networking](/categories/http)

middlewares/honeypot
====================

Middleware to implement a honeypot spam prevention

v2.1.0(1y ago)142.6k1MITPHPPHP ^7.2 || ^8.0CI passing

Since Oct 9Pushed 1y ago1 watchersCompare

[ Source](https://github.com/middlewares/honeypot)[ Packagist](https://packagist.org/packages/middlewares/honeypot)[ Docs](https://github.com/middlewares/honeypot)[ RSS](/packages/middlewares-honeypot/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (8)Versions (12)Used By (0)

middlewares/honeypot
====================

[](#middlewareshoneypot)

[![Latest Version on Packagist](https://camo.githubusercontent.com/ca1dc4e107a21cb4bf24b7628ffc1cd96b65cec044b10148a0c637426dbe1a79/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6964646c6577617265732f686f6e6579706f742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/middlewares/honeypot)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)[![Testing](https://github.com/middlewares/honeypot/workflows/testing/badge.svg)](https://github.com/middlewares/honeypot/workflows/testing/badge.svg)[![Total Downloads](https://camo.githubusercontent.com/8c549a4f303e20cccd050705b142f5455125d1cf447edbfe357fc722bbe1bc2f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6d6964646c6577617265732f686f6e6579706f742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/middlewares/honeypot)

Middleware to implement a honeypot spam prevention. This technique is based on creating a input field that should be invisible and left empty by real users but filled by most spam bots. The middleware check in the incoming requests whether this value exists and is empty (is a real user) or doesn't exist or has a value (is a bot) returning a 403 response.

Requirements
------------

[](#requirements)

- PHP &gt;= 7.2
- A [PSR-7 http library](https://github.com/middlewares/awesome-psr15-middlewares#psr-7-implementations)
- A [PSR-15 middleware dispatcher](https://github.com/middlewares/awesome-psr15-middlewares#dispatcher)

Installation
------------

[](#installation)

This package is installable and autoloadable via Composer as [middlewares/honeypot](https://packagist.org/packages/middlewares/honeypot).

```
composer require middlewares/honeypot
```

Example
-------

[](#example)

```
$dispatcher = new Dispatcher([
	new Middlewares\Honeypot()
]);

$response = $dispatcher->dispatch(new ServerRequest());
```

Usage
-----

[](#usage)

In your forms, you have to include a `` element that will be used as trap:

```

            input[name="hpt_name"] { display: none; }

                User:

                Password:

```

The middleware by default expect the input name is `hpt_name` but you can change it. Note also the css code that hide the honeypot, so users do not see anything, only robots. You may need to add some accesibility attributes like `aria-label` for screen readers.

```
//Check the default "htp_name" value
$honeypot = new Middlewares\Honeypot();

//Check other value, for example "nobots"
$honeypot = new Middlewares\Honeypot('nobots');
```

Optionally, you can provide a `Psr\Http\Message\ResponseFactoryInterface` as the second argument to create the error response (`403`) when spam is detected. If it's not defined, [Middleware\\Utils\\Factory](https://github.com/middlewares/utils#factory) will be used to detect it automatically.

```
$responseFactory = new MyOwnResponseFactory();

$honeypot = new Middlewares\Honeypot('htp_name', $responseFactory);
```

Helpers
-------

[](#helpers)

### getField

[](#getfield)

This static method is provided to ease the creation of the input field, accepting two arguments: the input name and a label used for screen readers. If no name is provided, use the same name passed previously to the middleware.

Example:

```

        User:

        Password:

```

### getHiddenField

[](#gethiddenfield)

This static method generates the input field just like `getField()` does, but adds inline CSS to hide the field directly. Note: This may be easier to detect for some bots. If you want to get creative with hiding the field, use `getField()` in combination with custom CSS (or JS).

```

        User:

        Password:

```

---

Please see [CHANGELOG](CHANGELOG.md) for more information about recent changes and [CONTRIBUTING](CONTRIBUTING.md) for contributing details.

The MIT License (MIT). Please see [LICENSE](LICENSE) for more information.

###  Health Score

44

—

FairBetter than 92% of packages

Maintenance47

Moderate activity, may be stable

Popularity25

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 92% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~308 days

Recently: every ~606 days

Total

11

Last Release

412d ago

Major Versions

v0.5.0 → v1.0.02018-01-27

v1.2.0 → v2.0.02019-12-02

PHP version history (4 changes)v0.1.0PHP ^5.6 || ^7.0

v0.5.0PHP ^7.0

v2.0.0PHP ^7.2

v2.0.1PHP ^7.2 || ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/e99df56b617f4af8cf0556a51a0ca20c7420104920c57d7e9eab093f92bb744f?d=identicon)[oscarotero](/maintainers/oscarotero)

![](https://www.gravatar.com/avatar/42e0d72f42eb7d84f67e20d28606da42e5a3248ca908b1eadb4366aafeae2561?d=identicon)[filisko](/maintainers/filisko)

---

Top Contributors

[![oscarotero](https://avatars.githubusercontent.com/u/377873?v=4)](https://github.com/oscarotero "oscarotero (46 commits)")[![filisko](https://avatars.githubusercontent.com/u/8798694?v=4)](https://github.com/filisko "filisko (2 commits)")[![carlosmintfan](https://avatars.githubusercontent.com/u/118076740?v=4)](https://github.com/carlosmintfan "carlosmintfan (1 commits)")[![franzliedke](https://avatars.githubusercontent.com/u/249125?v=4)](https://github.com/franzliedke "franzliedke (1 commits)")

---

Tags

honeypothttpmiddlewarepsr-15securityspam-protectionhttppsr-7middlewaresecurityserverpsr-15Honeypot

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/middlewares-honeypot/health.svg)

```
[![Health](https://phpackages.com/badges/middlewares-honeypot/health.svg)](https://phpackages.com/packages/middlewares-honeypot)
```

###  Alternatives

[middlewares/request-handler

Middleware to execute request handlers

451.6M25](/packages/middlewares-request-handler)[middlewares/firewall

Middleware to provide IP filtering

12318.3k2](/packages/middlewares-firewall)[middlewares/fast-route

Middleware to use FastRoute

96191.1k15](/packages/middlewares-fast-route)[middlewares/negotiation

Middleware to implement content negotiation

47442.1k10](/packages/middlewares-negotiation)[middlewares/payload

Middleware to parse the body of the request with support for json, csv and url-encode

32466.8k16](/packages/middlewares-payload)[middlewares/http-authentication

Middleware to implement Basic and Digest Http authentication

35302.0k2](/packages/middlewares-http-authentication)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
