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?

0voto

BojanG Punkte 1792

Es kann wenig getan werden, wenn eine dritte Partei Zugang zu fileB.php hat. REFERER bietet Ihnen keinen Schutz. REMOTE_ADDR ist nicht so einfach zu fälschen, was Ihnen eine gewisse Sicherheit geben könnte, dass die Anfrage legal ist.

0voto

zbateson Punkte 884

Ich denke, nickf hat genau richtig gehandelt, aber um seine Antwort noch ein wenig zu erweitern, würde ich Folgendes tun:

  • fileB.php auf Server1 fordert fileC.php auf Server2 an
  • fileC.php auf Server2 liefert ein zufällig generiertes Salt und speichert es in einer Datei oder Datenbank mit einem Zeitstempel
  • fileB.php auf Server1 fordert fileA.php auf Server2 an und sendet als Request-Body einen vorkonfigurierten Schlüssel, der gehasht, mit dem zufälligen Salt versehen und erneut gehasht wird (z.B. sha1(sha1('mypassword') . $salt))
  • fileA.php prüft, ob in den letzten 60 Sekunden ein Salt erzeugt wurde, wenn nicht, wird ein Fehler zurückgegeben
  • fileA.php führt denselben Hash mit seinem letzten zufälligen Salt und dem vorkonfigurierten Schlüssel - sha1(sha1('mypassword') . $salt) - erneut durch, der mit dem von fileB.php gesendeten Request Body verglichen wird. Wenn sie übereinstimmen, gewährt fileA.php den Zugriff auf fileB.php.
  • fileA.php löscht das zuletzt erzeugte Salt.

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