Jaki jest najbardziej niezawodny i bezpieczny sposób określenia, która strona wysłała lub wywołała (przez AJAX) bieżącą stronę. Nie chcę używać $_SERVER['HTTP_REFERER']
, ze względu na (brak) niezawodności i chcę, aby wywoływana strona pochodziła tylko z żądań pochodzących z mojej witryny.
Edycja: Chcę sprawdzić, czy skrypt, który wykonuje serię działań, jest wywoływany ze strony w mojej witrynie.
php
http-referer
UnkwnTech
źródło
źródło
$_SERVER[REMOTE_ADDR]
.Odpowiedzi:
REFERER jest wysyłany przez przeglądarkę klienta jako część protokołu HTTP i dlatego jest rzeczywiście zawodny. Może go tam nie być, może być sfałszowane, po prostu nie możesz mu ufać, jeśli jest to ze względów bezpieczeństwa.
Jeśli chcesz sprawdzić, czy żądanie pochodzi z Twojej witryny, nie możesz, ale możesz sprawdzić, czy użytkownik był w Twojej witrynie i / lub jest uwierzytelniony. Pliki cookie są wysyłane w żądaniach AJAX, więc możesz na tym polegać.
źródło
To, co znalazłem najlepiej, to token CSRF i zapisz go w sesji dla linków, w których musisz zweryfikować stronę odsyłającą.
Więc jeśli generujesz wywołanie zwrotne FB, wyglądałoby to mniej więcej tak:
Wtedy plik index.php będzie wyglądał następująco:
Wiem o bezpiecznych witrynach, które robią to samo dla wszystkich swoich bezpiecznych stron.
źródło
$_GET['token'] == $_SESSION['token']
a nie$_GET['token'] !== $_SESSION['token']
?Korzystanie z $ _SERVER ['HTTP_REFERER']
źródło
Nie ma niezawodnego sposobu, aby to sprawdzić. Klient może naprawdę powiedzieć, skąd się to wzięło. Możesz sobie wyobrazić, że używasz plików cookie lub informacji o sesjach umieszczonych tylko na niektórych stronach Twojej witryny, ale w ten sposób zepsujesz doświadczenie użytkownika z zakładkami.
źródło
Po przeczytaniu wszystkich problemów z fałszywymi adresami odsyłającymi pozostała tylko jedna opcja: tj. Strona, którą chcemy śledzić jako odsyłająca, powinna być utrzymywana w sesji, a jako wywołanie Ajaxa, a następnie sprawdzanie w sesji, czy ma wartość strony odsyłającej, i wykonanie czynności w inny sposób nie akcja.
Z drugiej strony, gdy zażąda innej strony, ustaw wartość sesji odsyłającej na zero.
Pamiętaj, że zmienna sesji jest ustawiana tylko na żądanie strony.
źródło