Pour les attaques pifométriques à répétition, je viens de penser à la solution suivante. Elle n'attend bien sûr que vos critiques.
Coté serveur, lors de l'affichage de la page d'inscription, on génère une clé aléatoire de 128bits (ça devrait suffire :p), qu'on stocke en DB, associée à l'IP du client. Cette clé est également mise en input "hidden" dans le formulaire d'inscription.
Une réponse ou une clé incorrecte au moment de la validation désactive toute possibilité d'inscription depuis cette IP pour 24 heures.
Si la réponse était correcte, d'autres inscriptions peuvent se faire.
Une tâche en cron peut nettoyer la DB des entrées ayant plus de 24 heures.
On peut réduire la durée de la "punition", si trop d'utilisateurs ont tendance à se tromper.
Il faut aussi faire attention à ne limiter les inscriptions que pour les adresses qui ont effectivement tenté leur chance, pour éviter que deux chargements de la page d'inscription ne désactive toute possibilité d'aller plus loin.
Évidemment, ça ne répond qu'au problème des essais/erreurs, et pas au genre de question qu'il faut poser à l'utilisateur pour le distinguer d'un bot.
[^] # Re: Le sens des mots.
Posté par Amand Tihon (site web personnel) . En réponse au journal des idées pour éviter la création automatique de compte par des bots ?. Évalué à 1.
Coté serveur, lors de l'affichage de la page d'inscription, on génère une clé aléatoire de 128bits (ça devrait suffire :p), qu'on stocke en DB, associée à l'IP du client. Cette clé est également mise en input "hidden" dans le formulaire d'inscription.
Une réponse ou une clé incorrecte au moment de la validation désactive toute possibilité d'inscription depuis cette IP pour 24 heures.
Si la réponse était correcte, d'autres inscriptions peuvent se faire.
Une tâche en cron peut nettoyer la DB des entrées ayant plus de 24 heures.
On peut réduire la durée de la "punition", si trop d'utilisateurs ont tendance à se tromper.
Il faut aussi faire attention à ne limiter les inscriptions que pour les adresses qui ont effectivement tenté leur chance, pour éviter que deux chargements de la page d'inscription ne désactive toute possibilité d'aller plus loin.
Évidemment, ça ne répond qu'au problème des essais/erreurs, et pas au genre de question qu'il faut poser à l'utilisateur pour le distinguer d'un bot.