2 Stimmen

PHP - Wie man feststellt, ob eine Anfrage von einer bestimmten Datei kommt

Ich habe fileA.php auf SERVER_A und fileB.php auf SERVER_B

fileB.php stellt eine curl-Anfrage an fileA.php, um deren Inhalt zu erhalten

Wie kann fileA.php feststellen, dass die Anfrage speziell von fileB.php kommt?

--

Ich dachte daran, den $_SERVER['SCRIPT_NAME'] in fileB.php an fileA.php zu senden, aber da jemand in fileB.php oder generell in jede Datei gehen und einfach $_SERVER['SCRIPT_NAME'] = 'fileB.php' machen kann, ist das nicht wirklich sicher.

Wie kann ich also aus Sicherheitsgründen feststellen, dass die Anfrage von einer bestimmten Datei auf einem anderen Server stammt?

4voto

Das können Sie nicht, zuverlässig. Sie können versuchen, einen HTTP-Header zu setzen und diesen auf der anderen Seite zu überprüfen; das ist nicht narrensicher, aber besser als die meisten anderen Methoden.

2voto

zaf Punkte 22282

Unmöglich, wegen Ihrer Aussage:

"since someone can go into fileB.php"

2voto

nickf Punkte 517253

Warum nicht ein geheimes Token einrichten und es auf der Empfängerseite verifizieren?

// fileB.php

$url = "http://example.com/fileA.php"
     . "?from=fileB"
     . "&token=" . sha1('fileB' . 'myaw3som3_salt!')
;
// then make the cURL request.

// fileA.php
if (sha1($_GET['from'] . 'myaw3som3_salt!') != $_GET['token']) {
    die();
}

Dies ist ein vereinfachtes Beispiel, aber Sie verstehen die Idee.

0voto

Xorlev Punkte 8393

Sobald Sie eine Anfrage außerhalb Ihres Servers stellen, haben Sie wirklich keine Kontrolle mehr. Wenn DateiA auf dem anderen Server die Möglichkeit hat, sich an DateiB zu vergreifen, müssen Sie Ihr Sicherheitsmodell überdenken. Wie ist die konkrete Situation?

0voto

Rouan van Dalen Punkte 748

Eine Möglichkeit wäre die Überprüfung der

$_SERVER['HTTP_REFERER']

Variable in PHP, aber es ist die Entscheidung des Browsers, diese zu füllen, so dass man ihr nicht ganz trauen kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X