Caddy¶
Das Modul für Caddy stellt jeder Anfrage eine Challenge voran. Wer sie besteht, erhält ein signiertes Sitzungs-Cookie und erreicht Ihre Anwendung ohne weitere Unterbrechung, bis die Frist abläuft. Alle übrigen Anfragen leitet das Modul auf die Challenge-Seite um.
Der Schutz gilt damit für die gesamte Domain, nicht für einzelne Formulare.
Ablauf¶
- Das Modul prüft jede Anfrage auf ein gültiges, an die IP-Adresse gebundenes Sitzungs-Cookie mit HMAC-Signatur.
- Ohne gültiges Cookie leitet es die Anfrage auf den Pfad der Challenge um.
- Nach der bestandenen Challenge prüft das Modul das Token serverseitig über die API.
- Bei Erfolg setzt es das signierte Cookie und leitet auf die ursprüngliche Adresse zurück.
Voraussetzungen¶
Die folgenden Voraussetzungen müssen erfüllt sein:
| Voraussetzung | Wert |
|---|---|
| Caddy | ab Version 2.9 |
| Werkzeug | xcaddy für den Bau mit dem Modul |
| Go | ab Version 1.22 für den Bau aus den Quellen |
| Zugangsdaten | Öffentlicher Sitekey und Secret aus der Ansicht Details |
Caddy mit dem Modul bauen¶
Bauen Sie Caddy mit xcaddy:
Aus den Quellen bauen Sie wie folgt:
git clone https://github.com/Myra-Security-GmbH/eu-captcha-caddy.git
cd eu-captcha-caddy
xcaddy build --with github.com/Myra-Security-GmbH/eu-captcha-caddy=.
Modul einrichten¶
Ergänzen Sie die Datei Caddyfile:
example.com {
eu_captcha {
sitekey EUCAPTCHA_SITE_KEY
secret EUCAPTCHA_SECRET_KEY
cookie_secret <random-32-byte-hex> # openssl rand -hex 32
grace_period 1h
}
reverse_proxy localhost:3000
}
In der Konfiguration als JSON lautet der Eintrag:
{
"handler": "eu_captcha",
"sitekey": "EUCAPTCHA_SITE_KEY",
"secret": "EUCAPTCHA_SECRET_KEY",
"cookie_secret": "<random-32-byte-hex>",
"grace_period": "1h"
}
Einstellungen¶
Die folgenden Einstellungen stehen zur Verfügung:
| Einstellung | Pflicht | Vorgabe | Wirkung |
|---|---|---|---|
sitekey |
ja | — | Öffentlicher Sitekey. |
secret |
ja | — | Geheimer Schlüssel. |
cookie_secret |
ja | — | Schlüssel für die HMAC-Signatur der Sitzungs-Cookies. Erzeugen Sie ihn mit openssl rand -hex 32. |
grace_period |
nein | 1h |
Gültigkeitsdauer einer bestandenen Challenge als Zeitangabe im Format von Go. |
cookie_name |
nein | __eucaptcha |
Name des Sitzungs-Cookies. |
challenge_path |
nein | /__captcha__ |
Pfadanfang für die Challenge und für die Prüfung. |
verify_url |
nein | https://api.eu-captcha.eu/v1/verify |
Adresse des Endpunkts für die Prüfung des Tokens. |
credentials_check_url |
nein | https://api.eu-captcha.eu/v1/verify-credentials |
Adresse des Endpunkts für die Prüfung der Zugangsdaten. Das Modul ruft ihn beim Start auf. |
Belegte Pfade¶
Das Modul belegt zwei Pfade Ihrer Domain. Verwenden Sie diese Pfade nicht in Ihrer Anwendung:
| Pfad | Verwendung |
|---|---|
{challenge_path} |
Zeigt die Challenge-Seite an. |
{challenge_path}/verify |
Nimmt das gelöste Token per POST entgegen. |
Mit der Vorgabe für challenge_path sind das die Pfade /__captcha__ und /__captcha__/verify.