WorkTime ProHandbuch
Zur Anwendung

Taktsperre

Die Anwendung begrenzt, wie viele Anfragen in einem Zeitfenster durchgehen. Wird die Grenze überschritten, antwortet sie mit 429.

Die Grenzen

BereichGrenze
alles Übrige120 Anfragen je Minute
POST /auth/login10 je Minute
POST /auth/register5 je Minute
POST /auth/refresh20 je Minute
POST /auth/forgot-password3 je fünf Minuten
POST /auth/reset-password5 je fünf Minuten

Die Erneuerung darf großzügiger sein als die Anmeldung: Ein normaler Arbeitstag erneuert alle fünfzehn Minuten, mehrere offene Reiter entsprechend häufiger. Gedrosselt ist sie trotzdem — auch sie ist öffentlich und prüft ein Geheimnis.

Zurücksetzen und Registrieren sind eng getaktet: Beide sind öffentlich, und das eine verschickt Mail.

Wonach gezählt wird

Für angemeldete Anfragen zählt das Benutzerkonto, davor die IP-Adresse.

Ein Betrieb sitzt hinter einer gemeinsamen öffentlichen Adresse. Zählte die Begrenzung nach IP, teilten sich sämtliche Mitarbeiter ein Kontingent — die Vertriebsabteilung brächte die Zeiterfassung der Werkstatt zum Erliegen, und niemand verstünde, warum.

Für alles vor der Anmeldung bleibt es bei der Adresse: Dort ist gerade sie das Richtige, denn ein Angreifer probiert viele Konten von einer Adresse aus.

Hinter einem vorgeschalteten Server

Die echte Adresse steht dann in X-Forwarded-For. Ohne diesen Kopf zählt jede Anfrage auf dieselbe Adresse — und die Anmeldung wäre nach zehn Versuchen für den ganzen Betrieb gesperrt. Siehe HTTPS einrichten.

Ein API-Schlüssel zählt als Benutzer

Er trägt die Kennung des ausstellenden Kontos beziehungsweise seine eigene. Zwei Schlüssel teilen sich also kein Kontingent, ein Schlüssel und sein Aussteller unter Umständen schon.

Was außerdem gegen das Durchprobieren wirkt

Nach fünf fehlgeschlagenen Anmeldungen wird das Konto für fünfzehn Minuten gesperrt — unabhängig von der Taktsperre und unabhängig davon, von welcher Adresse die Versuche kamen.

Im Testlauf

Ein Browsertestlauf kommt von einer einzigen Adresse und meldet sich in Sekunden ein Dutzend Mal an. Die Sperre greift dann richtig, aber sie prüft nicht mehr die Anwendung, sondern sich selbst.

Dafür gibt es einen Schalter, und er hat zwei Bedingungen: TAKTSPERRE_AUS=1 muss ausdrücklich gesetzt sein, und NODE_ENV darf nicht production sein. Eine versehentlich gesetzte Umgebungsvariable kann die Sperre im Betrieb also nicht öffnen.