Was ist der zuverlässigste und sicherste Weg, um festzustellen, welche Seite die aktuelle Seite gesendet oder aufgerufen hat (über AJAX). Ich möchte das $_SERVER['HTTP_REFERER']
wegen der (mangelnden) Zuverlässigkeit nicht verwenden, und ich brauche, dass die aufgerufene Seite nur von Anfragen stammt, die von meiner Site stammen.
Bearbeiten: Ich möchte überprüfen, ob ein Skript, das eine Reihe von Aktionen ausführt, von einer Seite auf meiner Website aufgerufen wird.
php
http-referer
UnkwnTech
quelle
quelle
$_SERVER[REMOTE_ADDR]
.Antworten:
Der REFERER wird vom Browser des Clients als Teil des HTTP-Protokolls gesendet und ist daher in der Tat unzuverlässig. Es könnte nicht da sein, es könnte gefälscht sein, man kann es einfach nicht vertrauen, wenn es aus Sicherheitsgründen ist.
Wenn Sie überprüfen möchten, ob eine Anfrage von Ihrer Site kommt, können Sie dies nicht. Sie können jedoch überprüfen, ob der Benutzer auf Ihrer Site war und / oder authentifiziert ist. Cookies werden in AJAX-Anfragen gesendet, sodass Sie sich darauf verlassen können.
quelle
Was ich am besten gefunden habe, ist ein CSRF-Token, das in der Sitzung für Links gespeichert wird, über die Sie den Referrer überprüfen müssen.
Wenn Sie also einen FB-Rückruf generieren, sieht dieser ungefähr so aus:
Dann sieht die index.php folgendermaßen aus:
Ich kenne sichere Websites, die für alle ihre sicheren Seiten das Gleiche tun.
quelle
$_GET['token'] == $_SESSION['token']
und nicht$_GET['token'] !== $_SESSION['token']
?Verwenden von $ _SERVER ['HTTP_REFERER']
quelle
Es gibt keine zuverlässige Möglichkeit, dies zu überprüfen. Es liegt wirklich in der Hand des Kunden, Ihnen zu sagen, woher es kommt. Sie können sich vorstellen, Cookie- oder Sitzungsinformationen zu verwenden, die nur auf einigen Seiten Ihrer Website gespeichert sind. Andernfalls würde die Benutzererfahrung mit Lesezeichen beeinträchtigt.
quelle
Wir haben nur noch eine Option, nachdem wir alle gefälschten Referrer-Probleme gelesen haben: dh Die Seite, die wir als Referrer verfolgen möchten, sollte in der Sitzung bleiben, und als Ajax aufgerufen, dann in der Sitzung einchecken, ob sie den Wert der Referrer-Seite hat, und die Aktion auf andere Weise ausführen Aktion.
Wenn er andererseits eine andere Seite anfordert, setzen Sie den Wert der Referrer-Sitzung auf null.
Denken Sie daran, dass die Sitzungsvariable nur auf Wunschanforderungsseite festgelegt wird.
quelle