PHPackages                             augustash/ash\_facet\_protection - 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. [Security](/categories/security)
4. /
5. augustash/ash\_facet\_protection

ActiveDrupal-custom-module[Security](/categories/security)

augustash/ash\_facet\_protection
================================

Protects Drupal sites from bot abuse of faceted search URLs

1.0.3(2mo ago)010proprietaryPHP

Since Apr 1Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/augustash/drupal-facet-protection)[ Packagist](https://packagist.org/packages/augustash/ash_facet_protection)[ Docs](https://github.com/augustash/drupal-facet-protection)[ RSS](/packages/augustash-ash-facet-protection/feed)WikiDiscussions master Synced 4w ago

READMEChangelogDependencies (2)Versions (5)Used By (0)

Facet Protection
================

[](#facet-protection)

Protects Drupal sites from bot abuse of faceted search URLs. Bots systematically crawl every combination of facet filter parameters, generating expensive uncached queries and bloating database cache tables.

What it does
------------

[](#what-it-does)

- **Validates facet aliases** — rejects requests using facet parameters that don't match any configured facet on the site (400 response). Valid aliases are cached and auto-invalidate when facet config changes.
- **Throttles faceted requests** — blocks requests with more than 8 facet parameters (429 response)
- **Rate limits per IP** — 30 faceted requests per minute per IP
- **Strips tracking params** — removes `srsltid` and similar params that fragment cache keys
- **Blocks crawling** — appends `robots.txt` rules to disallow faceted URLs via Composer Scaffold

All checks run as lightweight HTTP middleware before Drupal fully bootstraps. Invalid alias requests are rejected before they consume rate limit slots.

Setup
-----

[](#setup)

```
composer config --json --merge extra.drupal-scaffold.allowed-packages '["augustash/ash_facet_protection"]' && composer require augustash/ash_facet_protection
```

Then enable the module:

```
drush en ash_facet_protection
```

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance85

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% 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 ~4 days

Total

4

Last Release

77d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/58f09f3094dbf20ec7c4e7539132ab26b92f16b4aad1aed8812740383ca2af18?d=identicon)[kazajhodo](/maintainers/kazajhodo)

---

Top Contributors

[![kazajhodo](https://avatars.githubusercontent.com/u/1173204?v=4)](https://github.com/kazajhodo "kazajhodo (6 commits)")

### Embed Badge

![Health badge](/badges/augustash-ash-facet-protection/health.svg)

```
[![Health](https://phpackages.com/badges/augustash-ash-facet-protection/health.svg)](https://phpackages.com/packages/augustash-ash-facet-protection)
```

###  Alternatives

[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M406](/packages/drupal-core-recommended)

PHPackages © 2026

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