Toute la documentation
Documentation dhal

Règles et profils de route

Configurez les packs de règles, l’application par route, les suppressions et les faux positifs.

Voir le dépôt
Documentation dhal
Page 4 sur 9

Dhal combine des contrôles déterministes avec des politiques spécifiques aux routes. Commencez en surveillance puis appliquez le blocage aux routes dont le comportement est connu.

Contrôles disponibles

  • listes IP autorisées et bloquées ;
  • signatures SQLi, XSS, traversée de chemin, SSRF, RCE, SSTI, GraphQL et probes ;
  • taille de requête ;
  • anomalies d’en-têtes et de type de contenu ;
  • sécurité positive JSON ;
  • bots et automatisation ;
  • honeypots ;
  • credential stuffing ;
  • limitation et réputation IP.

Packs

generic-web, api, auth, wordpress et strict-api.

json
{
  "rules": {
    "packs": ["generic-web", "api"],
    "sqli": true,
    "xss": true,
    "pathTraversal": true
  }
}

Consultez le catalogue avec npx dhal rules.

Profils de route

json
{
  "mode": "monitor",
  "routes": {
    "/api/login": {
      "mode": "block",
      "tags": ["authentication"],
      "rateLimit": {
        "enabled": true,
        "windowSeconds": 60,
        "max": 20,
        "keyBy": ["ip", "route"]
      },
      "rules": {
        "credentialStuffing": {
          "enabled": true,
          "windowSeconds": 300,
          "maxFailures": 4,
          "keyBy": ["ip", "route", "userAgent"]
        }
      }
    }
  }
}

Les motifs acceptent les chemins exacts et le joker *. Si plusieurs motifs correspondent, Dhal choisit le plus spécifique selon sa longueur hors jokers.

json
{
  "routes": {
    "/api/admin/*": { "mode": "strict" },
    "/api/public/*": { "mode": "monitor" }
  }
}

Faux positifs

Pour les bots, ajustez scoreThreshold, minSignals, allowUserAgents, skipStaticAssets et ignorePaths avant de désactiver la règle globalement.

Activez rules.api globalement uniquement pour les services exclusivement JSON ; sinon utilisez un profil de route.

Suppressions

json
{
  "policy": {
    "suppressions": [
      {
        "id": "scanner-interne",
        "enabled": true,
        "ruleId": "honeypot.triggered",
        "path": "/.well-known/security-canary",
        "reason": "scanner interne approuvé",
        "expiresAt": "2027-01-01T00:00:00.000Z"
      }
    ]
  }
}

Les suppressions restent visibles dans l’audit. Rendez-les précises, justifiées et temporaires.