2016-05-04 11 views
2

Ich schreibe eine App mit PHP und habe in Sicherheitsprobleme untersucht. Ich würde gerne wissen, wie der folgende Code-Browser Informationen packt und wie es vom Browser an den Server übergeben wird:

$_SERVER['HTTP_USER_AGENT'] 
$_SERVER['REMOTE_ADDR'] 
gethostbyaddr($_SERVER['REMOTE_ADDR']) 

Ist diese Information verschlüsselt, wenn sie vom Client-PC an den Server übergeben wird? Wäre es für einen Hacker leicht, diese Daten zu stehlen?

+0

$ _SERVER Variablen stammen nicht vom Browser; sie kommen aus dem Web ___server___ (Apache, nginx, etc) ... wenn sie Browserinformationen enthalten, dann sind es Informationen, die der Browser an den Webserver in seinen Anfrageköpfen gesendet hat –

+0

Dies könnte nützliche Informationen enthalten: http: // security.stackexchange.com/questions/32299/is-server-a-safe-source-of-data-in-php – Daan

+0

'HTTP_USER_AGENT' ist nicht etwas, dem Sie vertrauen können. 'REMOTE_ADDR' kann auch die IP des Load Balancers oder Proxy Servers sein, also sollten Sie auch nach der Kopfzeile' X-Forwarded-For' suchen. Welche Sicherheitsprobleme versuchen Sie ohnehin zu lösen? – Mjh

Antwort

0

Im Wesentlichen ruft das PHP-Skript diese Variablen vom Webserver ab. Wie in der Handbuchseite enter link description here angegeben - Es gibt Informationen darüber, was die Variablennamen sind und mehr Informationen über sie und ihre Beschreibungen.

Um Ihre Frage in Kürze zu beantworten, werden sie von dem Webserver abgerufen, den Sie verwenden.

Wenn jemand versuchen sollte, ein Beispiel zu fälschen - $_SERVER['REMOTE_ADDR'] gibt es Informationen darüber, wie es gemacht werden kann here - Obwohl ich noch nie darüber nachgedacht habe.

Hoffnung hilft dies in irgendeiner Weise :)

0

Browser -> Apache -> PHP

Spoofing/andere als HTTP $ _SERVER Variablen Faking, ist schwierig, da es einige Handshakes zwischen Apache und Browser sind so Wenn jemand versucht, diese Variablen zu manipulieren, erhält er keine Antwort. Wenn zum Beispiel jemand versucht, REMOTE_ADDR zu spoofen, ist es wahrscheinlich, dass die Anfrage nicht abgeschlossen wird.

Auf der anderen Seite sind alle Variablen, die von HTTP_ ausgehen, einfach zu parodieren und werden an PHP gesendet, genau wie sie von Apache aus dem Browser empfangen werden. So kann der Benutzer beispielsweise ein Curl-Skript mit einem benutzerdefinierten Benutzeragenten (HTTP_USER_AGENT) schreiben, und Sie erhalten die Antwort so wie sie ist.

0

$ SERVER diese Super globale Variable wird von Web-Server statt PHP übergeben, aber einige von ihnen ist Referenz durch die HTTP-Request-Header, lassen Sie mit dem Präfix sagen „HTTP“ von Client generiert wird (Request-Header) und REMOTE_ADDR ist die Adresse auf TCP-Ebene, keine willkürliche aber auch keine Garantie.

  • HTTP_USER_AGENT ist im Klartext auf Kopf, leicht
  • REMOTE_ADDR technisch auf IP-TCP-Ebene-Adresse zu ändern, einige Geräte oder spezielle Software zu fälschen Server benötigen.
Verwandte Themen