2009-05-19 14 views
6

dokładną kopią: How to handle multiple submissions server-sidezapobiegania podwójnemu wysłanych formularzy

Ogólnym zadaniem w zasięgu ręki: zapobieganie składanie podwójne formularza w aplikacji opartej na internetowej dla wielu użytkowników. Pomyśl o transakcjach finansowych.

Mam dwie metody, które mogą być użyte w tandemie:

  1. JavaScript wyłączenie przycisku
    • Wada: nie działa, jeśli JavaScript jest wyłączony
  2. Back-end verfication - zobacz, jak dawno temu ostatnie żądanie tego typu pochodziło od tego użytkownika i wystąpił błąd, jeśli nie tak dawno temu
    • Wada: Jeśli oba argumenty są wystarczająco blisko siebie, z których każda może nie być świadomy drugiej

szukam ekspertów z danej dziedziny, aby wnieść swoje najlepsze praktyki oraz ezoterycznych sztuczek . Może być dowolnym językiem i strukturą, ale Django ma szczególne znaczenie. W Internecie dużo napisano o tym zadaniu, ale dobrze byłoby pokazać tutaj najlepsze praktyki.

+0

To zostało zamknięte, ale gdzie są podobne pytania? tag podwójnego zgłaszania zapobiegania nie wywołuje dokładnie tego samego scenariusza problemu. – vsingh

Odpowiedz

8

Powszechnym rozwiązaniem jest generowanie tokena na serwerze przy każdym generowaniu formularza. Przechowuj token na serwerze, dodaj go jako ukryte pole do formularza i usuń po otrzymaniu formularza z tym tokenem.

Jeśli otrzymasz formularz bez ważnego tokena, oznacza to, że formularz został już przesłany i zignorowany.

Ma to dodatkową zaletę dodania ochrony XSRF do projektu.

Powiązane problemy