2009-05-19 4 views
6

exacte en double: How to handle multiple submissions server-sidesoumissions double Prévention forme

La tâche générale à portée de main: la prévention d'une double soumission formulaire dans une application web multi-utilisateur. Pensez aux transactions financières.

J'ai deux méthodes qui peuvent être utilisées en tandem:

  1. JavaScript invalidante du bouton
    • Inconvénient: ne fonctionne pas si Javascript est désactivé
  2. Verfication Back-end - voir depuis combien de temps la dernière requête de ce type provient de cet utilisateur et de l'erreur de sortie s'il n'y a pas trop longtemps
    • Inconvénient: Si les deux présentations sont suffisamment proches, chacun peut ne pas être en mesure d'être au courant de l'autre

Je cherche des experts en la matière pour contribuer leurs meilleures pratiques, ainsi que des astuces ésotériques . Peut être n'importe quel langage et cadre, mais Django est d'un intérêt particulier. Beaucoup de choses ont été écrites sur le web à propos de la tâche à accomplir, mais ce serait bien d'avoir les meilleures pratiques présentées ici.

+0

Ceci a été fermé mais où sont les questions similaires? La balise double-submit-prevention n'indique pas exactement le même scénario de problème. – vsingh

Répondre

8

La solution commune consiste à générer un jeton sur le serveur chaque fois que vous générez un formulaire. Stockez le jeton sur le serveur, ajoutez-le en tant que champ masqué au formulaire et supprimez-le dès que vous obtenez une soumission de formulaire avec ce jeton.

Si vous obtenez une soumission de formulaire sans jeton valide, cela signifie que le formulaire a déjà été envoyé et ignoré.

Ceci a l'avantage supplémentaire d'ajouter la protection XSRF à votre projet.

Questions connexes