How to get http-request Ursprung in php
Ich will eine API erstellen und authentifizieren API-Verbraucher, werde ich Ihnen einen API-SCHLÜSSEL, App-id und App-Secret. Das problem ist, dass ich will wissen, wo der http-Request aus, so dass ich kann wissen, ob der Host, der die que Anfrage ist der Sitz der Gastgeber. Zum Beispiel : www.someone.com hat eine app-id :0001, app-secret:1200 und api-Schlüssel:458. Wenn diese Anmeldeinformationen werden verwendet, um Einen Wunsch, ich möchte wissen, ob der Antragsteller wirklich www.someone.com
Für origin verwenden Sie diese
Mit dem Ursprung als Sicherheitsmaßnahme ist darüber hinaus nutzlos. Dieser header kann leicht gefälscht. Stattdessen möchten Sie vielleicht, um die Arbeit mit einem callback zu übergeben, einige "Anfrage-token" (überlegen Sie, wie der oauth-flow funktioniert).
Mit HTTP_ORIGIN oder HTTP_REFERER ohne Sie zu überprüfen ist "im wesentlichen" dasselbe wie "*" open up subtile Sicherheitslücken so entmutigt, finden Sie unter stackoverflow.com/questions/12001269/...
Eine Antwort auf die eigentliche Frage "How to get http-request Herkunft" finden Sie hier: stackoverflow.com/questions/41326257/...
header("Access-Control-Allow-Origin: " . $_SERVER['HTTP_ORIGIN'] . "");
und dann überprüfen Sie die Anmeldeinformationen von GET-oder POST-VariablenMit dem Ursprung als Sicherheitsmaßnahme ist darüber hinaus nutzlos. Dieser header kann leicht gefälscht. Stattdessen möchten Sie vielleicht, um die Arbeit mit einem callback zu übergeben, einige "Anfrage-token" (überlegen Sie, wie der oauth-flow funktioniert).
Mit HTTP_ORIGIN oder HTTP_REFERER ohne Sie zu überprüfen ist "im wesentlichen" dasselbe wie "*" open up subtile Sicherheitslücken so entmutigt, finden Sie unter stackoverflow.com/questions/12001269/...
Eine Antwort auf die eigentliche Frage "How to get http-request Herkunft" finden Sie hier: stackoverflow.com/questions/41326257/...
InformationsquelleAutor m_junior | 2014-08-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
$_SERVER['HTTP_REFERER']
. Es ist die Adresse der Seite (falls vorhanden), die gemäß den Benutzer-agent auf die aktuelle Seite. Diese wird durch den user-agent. Nicht alle user-agents wird das set, und einige bieten die Möglichkeit zum ändernHTTP_REFERER
als ein feature.Weitere Einschränkungen können Sie folgende Aktionen durchführen.
example.com
sollte geändert werden, um Ihre domain.IIS unter web config:
Apache set unten im httpd.conf/apache.conf
Nicht alle user-agents wird das set, und einige bieten die Möglichkeit zum ändern HTTP_REFERER als ein feature. Kurz gesagt, es ist nicht wirklich vertrauenswürdig.
Das eigentlich mir geholfen, danke Kumpel.
Eine bessere Antwort auf diese Frage finden Sie hier: stackoverflow.com/questions/41326257/...
@DanFromGermany berührt, HERKUNFT und REFERENZ sind zwei verschiedene Dinge -
HTTP_ORIGIN
ist das in diesem Fall besser alsHTTP_REFERER
; wennHTTP_ORIGIN
fehlt, dann können Sie zurückgreifen, um mitHTTP_REFERER
, aber ich würde abraten, für die Sicherheit (es ist einfacher zu ändern, den referer, als die Herkunft, wie Ursprungs ist gelistet als "verboten" - header und Browser sollte verhindern, dass änderungen an der Herkunft aus stattfindet).InformationsquelleAutor Sunit
In der Regel, dieser header sollte den job tun. Nachdem der domain-name in diesem header
aber wenn Sie wollen, um zu überprüfen, für weitere Informationen, verwenden Sie etwas wie das folgende snippet
Wenn der Benutzer zu Durchlaufen haben, weitere Daten zu Ihrem Dienst, verwenden
POST
stattGET
gibt die IP-Adresse des Servers, unter dem das aktuelle Skript ausgeführt wird.
Die
$allowed
array von oben Aussehen kann auch auf diese Weise$allowed = array('domain1' => '1.2.3.4', 'domain2' => '5.6.7.8', 'domain3' => '2.4.6.8');
und dann können Siegethostbyname('domain')
und vergleichen Sie die zurückgegebenen IP-Adresse des Hosts mit der IP im array.warum haben Sie abgelehnt meinem edit? Dein code hat 4 syntax-Fehler und ist nicht optimal formatiert SO.
Ich bin mir nicht mehr sicher, was geschah, als ich bemerkte, wie vor einem Jahr. Wichtig ist das array
$allowed
und das macht es eine gute Antwort.InformationsquelleAutor hex494D49
Ich denke was du meinst ist, dass Sie wollen, um den Zugriff auf die "Origin" - header in der Anforderung Header (im Gegensatz zur Einstellung in die Antwort-Header).
Für diese der einfachste Weg ist, um Zugriff auf die integrierten in getallheaders() Funktion ist ein alias für apache_request_headers() - N. B. dies wird vorausgesetzt, Sie sind mit php als Modul.
Diese gibt ein array zurück, so dass die Origin-header verfügbar sein sollten wie diese:
Wenn Sie mit php über so etwas wie fastcgi, dann ich glaube, es würde zur Verfügung gestellt werden, die in der Umwelt - in der Regel kapitalisiert und mit dem Präfix "HTTP_", so sollte es sein
$_SERVER['HTTP_ORIGIN']
.Hoffe, das hilft jemand anderes suchen 🙂
Ja, das ist, warum ich erwähnte, war, vorausgesetzt, Sie wurden mit Hilfe von php als Modul (mod_php) und das sonst sein als eine environment-variable.
InformationsquelleAutor sensadrome
Mit einem
var_dump
Sie können sehen, dass dierequest
zu bieten hat.Tun
var_dump
auf dieserver
sowohl Globale als auch. Es enthält eine Menge nützliche Informationen.InformationsquelleAutor Peter
Laravel 5: in request-Methode controller:
InformationsquelleAutor Kamil Kiełczewski