Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dhal.rokad.co/llms.txt

Use this file to discover all available pages before exploring further.

Credential-stuffing defense

Dhal can learn from repeated failed login responses and block later attempts from the same identity key.
{
  "rules": {
    "credentialStuffing": {
      "enabled": true,
      "loginPathPatterns": ["/api/login", "/login", "/auth/login"],
      "failureStatusCodes": [400, 401, 403],
      "windowSeconds": 300,
      "maxFailures": 8,
      "keyBy": ["ip", "route"]
    }
  }
}

Response outcome recording

Adapters record response status codes after the response finishes. Repeated failures are stored in a signal store.

Distributed signal store

Use Redis/Valkey for multi-instance production.
import Redis from "ioredis";
import { RedisSignalStore } from "@rokadhq/dhal/stores/redis-signal";

const redis = new Redis(process.env.REDIS_URL);
const signalStore = new RedisSignalStore(redis);

Safer enforcement

Keep global mode monitor and set block only on login routes after reviewing events.