2008-08-18 11 views
9

Jaka jest najlepsza praktyka zapewniająca, że ​​niektóre wywołania ajax na określone strony są akceptowane tylko od uwierzytelnionych użytkowników?Przyjmowanie tylko niektórych żądań ajaxowych od uwierzytelnionych użytkowników

Na przykład:

Powiedzmy, że mam stronę główną o nazwie blog.php (wiem, kreatywność obfituje). Powiedzmy też, że istnieje strona o nazwie delete.php, która wyszukuje parametr post_id, a następnie usuwa jakiś wpis z bazy danych.

W tym bardzo wymyślnym przykładzie na blog.php znajduje się mechanizm, który wysyła żądanie przez ajax do delete.php w celu usunięcia wpisu.

Teraz ten mechanizm będzie dostępny tylko dla uwierzytelnionych użytkowników na blog.php. Ale co ma powstrzymać kogoś od zwykłego wywoływania delete.php z mnóstwem losowych liczb i usuwania wszystkiego ze strony?

Zrobiłem szybki test, gdzie ustawić zmienną sesji w blog.php a następnie zrobił ajax wywołanie delete.php powrót czy zmienna sesji został ustawiony lub nie (nie było).

Jaki jest akceptowany sposób radzenia sobie z takimi rzeczami?


OK. Musiałem być szalony za pierwszym razem, gdy próbowałem tego.

Po prostu wykonałem kolejny test podobny do tego, który opisałem powyżej i działał idealnie.

Odpowiedz

8

Masz rację próbując użyć zmiennych sesji. Po uwierzytelnieniu użytkownika należy przechowywać te informacje w ich sesjach, aby każdy kolejny widok strony to zobaczył. Upewnij się, że dzwonisz pod numer session_start() na obu stronach (blog.php i delete.php) przed uzyskaniem dostępu do $ _SESSION. Upewnij się również, że masz włączoną obsługę plików cookie - a jeśli nie, to powinieneś przekazać dodatkowy parametr w ciągu zapytania, zwykle PHPSESSID = < session_id()>.

3

Nie zaleca się korzystania z sesji do uwierzytelniania bez podejmowania dodatkowych działań. Read more on.

Powiązane problemy