Limites de débit

Les tentatives qu’on peut deviner ou dont on peut abuser sont limitées par adresse client (ou par personne quand elle est connectée) : connexion, inscription, ouverture des liens d’invitation, envoi d’invitations, effacement d’un compte (ADR 0025).

Action

Limite

Ouvrir ou accepter un lien d’invitation

30 par minute par adresse client

Envoyer ou renvoyer une invitation à un logement

10 par minute et 50 par jour par personne

Inviter à l’instance

10 par minute et 50 par jour par administrateur

S’inscrire

10 par minute et 60 par jour par adresse client

Effacer un compte

5 par minute par personne

Connexion, réinitialisation du mot de passe

valeurs par défaut d’allauth

Au-delà d’une limite, la page d’ouverture d’un lien d’invitation et les pages d’allauth (connexion, inscription, réinitialisation du mot de passe) répondent 429. L’envoi d’une invitation, à un logement ou à l’instance, et l’effacement d’un compte sur le web restent sur leur page avec un message qui dit de réessayer plus tard. L’API répond 429 dans tous les cas.

Quelle adresse

L’adresse client est REMOTE_ADDR. Derrière un proxy inverse, c’est l’adresse que le proxy indique dans X-Forwarded-For, et seulement quand le proxy figure dans HOUSECAIRN_FORWARDED_ALLOW_IPS ; de tout autre pair, l’en-tête est ignoré, et HouseCairn ne le lit jamais lui-même. Un client qui falsifie l’en-tête ne change pas l’adresse sous laquelle il est compté. Voir Proxy inverse.

Par processus, ou partagés

Les compteurs vivent dans un cache. Par défaut, il est dans la mémoire de chaque processus web : avec HOUSECAIRN_WEB_WORKERS=2, chaque processus compte seul et une limite peut être jusqu’à deux fois plus lâche. Pour partager les compteurs entre les processus web, faites pointer HOUSECAIRN_CACHE_URL vers un cache partagé :

HOUSECAIRN_CACHE_URL=dbcache://housecairn_cache

les conserve dans la base de données (la table est créée au démarrage, avec SQLite ou PostgreSQL). Une URL Redis ou Memcached fonctionne aussi. Les limites restent un frein : la vérification des adresses et le contrôle anti-robot sont les autres barrières de l’inscription libre.