php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 22.07.2005, 21:43  
Gast
 
Beiträge: n/a
Standard

Kann nur soviel sagen bzw. schreiben, dass die Dateiendung sch.. egal ist.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.07.2005, 21:44  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von ladojef
Ich möchte dann eine Kleinigkeit an der Sicherheit bemängeln.

Code:
$_FILES['bild']['type']=="image/jpeg"
Und zwar genau hier. Dieses Array richtet sich meines Wissens nach nämlich nur nach der Dateiendung.
Nein. Dort landet der Content-type aus dem Protokoll.

Natürlich ist das unzuverlässig, weil diese Angabe ja vom Client kommt und somit gefälscht sein kann.

Besser und sicherer ist:
PHP-Code:
<?php
echo mime_content_type($_FILES['bild']['tmp_name'];
?>
Dann ermittelt das System den tatsächlichen Content-type.

Ja, es muß die temporäre Datei sein, weil das System den Dateiinhalt prüft und so den Content-type ermittelt.
  Mit Zitat antworten
Alt 22.07.2005, 21:54  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von meikel
Nein. Dort landet der Content-type aus dem Protokoll.
Natürlich ist das unzuverlässig, weil diese Angabe ja vom Client kommt und somit gefälscht sein kann.
Nur um es noch deutlicher zu machen: der client/browser sendet an dieser Stelle eine beliebige Zeichenkette, die ohne weitere Prüfung übernommen wird.
Wenn ich will, wird da text/witz als Typ gesendet, oder auch abc/xyz.
  Mit Zitat antworten
Alt 23.07.2005, 00:40  
Gast
 
Beiträge: n/a
Standard

Er liest den mime aus ... das war schon immer so.
  Mit Zitat antworten
Alt 23.07.2005, 00:44  
Gast
 
Beiträge: n/a
Standard

Muss "er" aber nicht.
  Mit Zitat antworten
Alt 23.07.2005, 02:20  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von MarioNetz
Er liest den mime aus ... das war schon immer so.
Jou: "Gib Gas, gestern war hier auch grün!"
Wer ungeprüft Userdaten vertraut, stirbt!

In $_FILES['datei']['type'] steht der Mime-Type der Datei, falls der Browser diese Information zur Verfügung gestellt hat. Der Browser sendet diese Angabe im HTTP Header unter Content-type mit. Wer sich darauf verläßt, daß HTTP_USER_AGENT und Content-type stimmen, der verdient es geradezu, mal gründlich verarscht zu werden.

Welchen Schrott soll ich Dir als Bild getarnt wohin schicken? Wir können uns dabei auf alles einigen, was ich fälschen soll...

12.11. Prüfe importierte Parameter. Traue niemandem
http://www.php-faq.de/q/q-sicherheit-parameter.html
Zitat:
Parameter, die als GET, POST oder COOKIE-Werte in das lokale Programm gekommen sind, sind nicht vertrauenswürdig. Techniken, die Variablen als GET-Parameter am Ende einer URL durchschleifen oder als HIDDEN-Variablen in Formularen weitergeben (Ping-Pong-Technik), sind daher prinzipbedingt fehlerhaft und können niemals sicher sein.

Auch dürfen Variablen aus GPC-Quellen niemals ungeprüft direkt verwendet werden, sondern müssen zwingend erst einmal auf Ungefährlichkeit geprüft werden (siehe Wie unterscheide ich böse Variablen von guten?). Bei Parametern, die gegen die Empfehlung per Ping-Pong weitergereicht werden, muss dieser Test jedesmal (auf jeder Seite) wieder gemacht werden, da ja ein Anwender oder ein böswilliges Programm die Werte inzwischen geändert haben könnte.

Eine Webanwendung kontrolliert nur den Bereich bis zur Firewall. Der Browser des Anwenders befindet sich auf der anderen Seite der Firewall und ist daher als Feindesland anzusehen. Daten, die von dort kommen, können unerwartete Werte oder unerwartete Formate haben. Insbesondere kann eine Webanwendung keine Annahmen über bestimmte Eigenschaften des Browsers machen, wie zum Beispiel "JavaScript wird zuverlässig ausgeführt", "Cookies werden akzeptiert und verändern ihre Werte nicht spontan" oder "Referer-Header sind vertrauenswürdig".

Es gelten daher die folgenden Empfehlungen:

Jede Form von Ping-Pong, also Wert-Weitergabe durch GET-Parameter, HIDDEN-Variablen und dergleichen ist zu vermeiden. Auch durch Codierung der Werte ist hier nichts zu erreichen.

Stattdessen sind Sessionvariablen zu verwenden. Nur die Session-ID wird von einer Seite an eine andere Seite weitergereicht.

Keinesfalls darf ein Programm Werte aus einer GET, POST oder COOKIE-Quelle direkt verwenden. Jeder externe Wert ist einer Plausibilitätsprüfung zu unterziehen, bevor er verwendet wird (Genau das wird in Wie unterscheide ich böse Variablen von guten? näher beschrieben).

Validierung von Eingabewerten muss serverseitig durch PHP geschehen. JavaScript-Validatoren sind nicht vertrauenswürdig:

Der Browser des Anwenders führt diese Validatoren möglicherweise nicht aus, auch dann, wenn er sich durch die User-Agent-Zeile als JavaScript-fähiger Browser identifiziert.

Ebenso muss angenommen werden, dass die Referer-Header des Browsers möglicherweise gefälscht sind. Man kann nicht annehmen, dass ein Zugriff tatsächlich von einer bestimmten vorhergehenden Seite hierher vermittelt wurde.

Zusammenfassend: Traue niemandem. Validiere allen Input oder stirb.
  Mit Zitat antworten
Alt 23.07.2005, 02:25  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von meikel
Welchen Schrott soll ich Dir als Bild getarnt wohin schicken? Wir können uns dabei auf alles einigen, was ich fälschen soll...
In umgekehrter Richtung ist das beim IE zum Lacher geworden; am liebsten war mir das "Bild" Masshalter.gif, durch das per vb-skript sämtliche cd-rom-Laufwerke geöffnet wurden
  Mit Zitat antworten
Alt 23.07.2005, 02:35  
Gast
 
Beiträge: n/a
Standard

<ggg>
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Webcam-Daten auslesen, Bilderkennung. Zergling-new Off-Topic Diskussionen 8 12.09.2007 13:26
Bilderkennung (vergleich) Dragon26mFR PHP-Fortgeschrittene 18 09.09.2005 18:43

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bilderkennung javascript, bilderkennung browser, plausabilitätsprüfung bilderkennung, browser kennung header fälschen php, bilderkennung dateiendung, webcam für bilderkennung

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.