Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP i formularze, Różne sposoby, jak ominąć akcję ponownego wysyłania formularzy
likemandrake
post
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

Ostrzeżenie: (0%)
-----


Witam!

Temat pewnie nie raz był poruszany, ale pomyślałem, żeby to wszystko zgromadzić w tym jednym miejscu.

Otóż tak jak w temacie, chodzi o różne sposoby aby zabezpieczyć się przed ponownym wykonaniem akcji wysyłania formularzy (zwykle przez użycie przycisków odśwież i wstecz w panelu nawigacyjnym przeglądarki).

Dla przykładu, gdy w przeglądarce firefox klikniemy na przycisk wstecz, wyskoczy pytanie, czy ponownie wysłać dane POSTDATA. Aby poprzednia strona się załadowała, trzeba odpowiedzieć twierdząco, no i w tym czasie następuje to co nie powinno i jeśli nie zareagujemy odpowiednio na ten proceder, powiedzmy w bazie danych znajdą się zduplikowane dane lub jeśli komuś sprawia to zabawę wstawi masę nie potrzebnych wpisów.

Drugim przykładem może też być odświeżanie strony po wysłaniu formularza, co też może być powodem duplikowania danych.

Już nie wspomnę jakie szkody mogą wyrządzić różne automaty stworzone do tego typu celów...

Sposobów na zabezpieczenie się przed tym jest wiele, czy to przekierowania, czy nadawanie specjalnych jednorazowych identyfikatorów na daną akcję, pragnę jednak, aby każdy z was w miare możliwości przedstawił swoje obserwacje i doświadczenia w tym kierunku, a każdy zainteresowany tym tematem mógłby znaleźć coś dla siebie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Serdecznie pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ludvik
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat
W takim wypadku token synchronizujacy napewno nie moze byc uzyty.

A niby dlaczego token miałby być zły? To jest najbardziej sensowne wyjście... Przecież napisałem, że przy utworzeniu formularza generujesz token, zapisujesz go w sesji i dodajesz go jako ukryte pole. Użytkownik wysyła ten formularz i dzieje się tak:
- sprawdzamy token - zgadza się
- wykonujemy modyfikacje danych
- zmieniamy/usuwamy token
Użytkownik naciska odśwież:
- sprawdzamy token - token jest inny/nie ma tokenu
- wyrzucamy błąd

Cytat
Dla kazdego typu sytuacji jednak sa rozne inne sposoby, do rejestracji inny, do klikania na link inny, itp. itd.

Zdziwiłbyś się, jakim elastycznym narzędziem jest token synchronizujący. Ochrona przed duplikacją danych nie jest jego jedynym zastosowaniem...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 21:46