Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wykryć że Requst AJAX pochodzi z naszej strony
Forum PHP.pl > Forum > XML, AJAX > AJAX
karakara
Jak wykryć że Requsst AJAX pochodzi z naszej strony?

Na stronie z automatu w pewnym momencie wysyłam dane w POST przez AJAX i aktualizuje bazę.
Na początku szło to przez GET i można było wklejić odpowiedni link akcji w przeglądarce i zmienić dane.
Teraz sprawdzam czy to AJAX poprzez HTTP_X_REQUESTED_WITH
Ale ciągle na swoim kompie można wysłać AJAXem dane do mojego serwera.
Gdzieś czytałem że można się zabezpieczyć przez HTTP_REFERER ale nie do końca bo nie wszystkie przeglądarki to ustawiją.

A chciałbym mieć pewność że request AJAXowy jest wykonywany na mojej stronie.

Pozdrawiam
kyku
Wątpię, że coś takiego da się prosto zrobić, ale możesz sprawdzić co zwróci
  1. <? print_r($_SERVER); ?>

Możesz wysyłać dodatkowy parametr (jakiś unikalny np. generowany i zapisywany gdzieś kod, który zmienia się co jakiś czas/jakąś akcje)
lub zmienić GET na POST i crossdomain zrobi swoje (przy ajaxie oczywiście)

albo:
  1. if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
karakara
sprawdzanie po HTTP_X_REQUESTED_WITH już mam,

interesowałoby mnie właśnie coś z unikalnym tokonem ale przecież cały kod JS jest jawny (będzie wiadomo skąd jest token, lub jak go się generuje) nawet gdy zaciemnimy kod to FireBug pokaże akcje i token który został wysłany
sebekzosw
generuj token w php, zapisuj w sesji i sprawdzaj czy jest przesłany. Oczywiście szyfruj go w md5()
karakara
no coś takiego mi przeszło przez głowe
w sesji zapisuje sobie jakiś token i gdy przychodzi ajax request to sprwadzam czy w sesji jest ten token
ale nie mam pewności czy to na pewno zlikwiduje ten problem do końca


wybacz ale muszę, md5 to nie szyfrowanie
Crozin
Google: CSRF
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.