sicherheitsrisiko: upload von html-dateien
cayaphas
- php
tach,
Ich habe ein eigenes kleines CMS geschrieben, und biete da unter anderem so Sachen an, wie einen Datei-Download einzurichten.
Ich würde gerne ein weiters Feature hinzufügen, bei dem der User einen html-Link setzten kann, auf eigene erstellte html-dateien.
Ich habe es mir so vorgestellt, dass der User selbsterstellte "HTML-Projekte" hochladen kann. Sowas gibts doch z.B. wenn ne Office Anwendung irgendwelche HTML-Seiten exportiert, oder irgendwelche selbsterstellten Bildergallerien von Photoshop.
Es wird ein Verzeichnis angelegt, in dem diese ganzen Dateien abgelegt werden, und einfach ein Link auf dieses Verzeichnis gelegt (respektive auf die zu verlinkende datei im Verzeichnis).
Ich hab zwar ein paar Sachen hier im Forum gefunden, wie man das machen kann, hab aber nirgends die jeweiligen Vorteile und Nachteile gefunden, und bei mir geht es eigentlich mehr um das Verständnis.
Es geht ja darum, dass ich dafür sorgen muss, dass eine Ausführung von Skripten verhindert muss.
Und ich hab 2 Möglichkeiten gefunden:
Ich hab bis jetzt von beiden Sachen noch zu wenig Ahnung, werd mich aber noch einlesen. (Ich kann zwar schon was damit anfangen, aber bin halt noch kein Experte)
Ich würde auch nur gerne wissen, ob das sämtliche Möglichkeiten sind, um Skripte zu verhindern, und was für das eine bzw. für das andere spricht. Oder ob es Sinn macht beides zu implementieren.
Ich möchte nur die generellen Möglichkeiten erfahren, bzw. Vor- und Nachteile wissen, da es mit Sicherheit noch Sachen gibt, die ich nicht berücksichtigt hab.
Wie schon gesagt: Verständnis.
Ich dank Euch im Voraus
caya
hi,
Es geht ja darum, dass ich dafür sorgen muss, dass eine Ausführung von Skripten verhindert muss.
Im Archiv findest du schon mal eine recht ausführliche Diskussion darüber, welche Dateiendungen als kritisch anzusehen sein könnten.
Ich würde auch nur gerne wissen, ob das sämtliche Möglichkeiten sind, um Skripte zu verhindern
Wenn du HTML-Dokumente zulässt, könnte ja auch darin enthaltener Javascript-Code eine Gefahr darstellen - über den sich dann bspw. die Cookies der Anwender klauen lassen.
gruß,
wahsaga
Im Archiv findest du schon mal eine recht ausführliche Diskussion darüber, welche Dateiendungen als kritisch anzusehen sein könnten.
Jepp, hab ich auch schon gefunden gehabt ...
Ich bin auch davon ausgegangen, dass ich durch das Überprüfen der Dateiendungen schon mal die "offensichtlichen" , "möglichen" Skripte vermeiden kann.
Dank dir schon mal für die Bestätigung.
Wenn du HTML-Dokumente zulässt, könnte ja auch darin enthaltener Javascript-Code eine Gefahr darstellen - über den sich dann bspw. die Cookies der Anwender klauen lassen.
Das stimmt natürlich immer, sobald ich html-Dateien zulasse, aber da kann ich mir zumindest schon mal sicher sein, dass durch das Verhindern von serverseitigen Skripten, auf meinem Server kein Unfug getrieben werden kann.
Und eben solch eine Bestätigung hab ich gesucht.
Ich war mir eben nicht sicher, ob es doch eine Möglichkeit gibt, Skript-Dateien bzw. Skripte generell abzufangen (z.B. durch ein .htaccess Eintrag;
natürlich immer unter der Prämisse, dass der Server selbst korrekt konfiguriert ist)
Ebenso unsicher bin ich mir dabei, ob es Dateien auch mit zugelassenen Dateiendungen (*.html, *.htm, *.jpg etc.) irgendwie möglich ist, serverseitige Skripte auszuführen.
(Da hab ich eben zuwenig Ahnung von Skriptausführung auf dem Server)
Aber ich hab halt auch hier im Forum sehr oft die Lösung gefunden, dass man auf die Dateiendung abfrägt, also geh ich auch davon aus, dass dadurch sehr viel abgefangen wird.
Ich werd mich noch ein wenig durchlesen, bin aber schon um einiges beruhigter.
Dank Euch
caya
Hallo ,
Wenn du HTML-Dokumente zulässt, könnte ja auch darin
enthaltener Javascript-Code eine Gefahr darstellen - über
den sich dann bspw. die Cookies der Anwender klauen
lassen.
Das stimmt natürlich immer, sobald ich html-Dateien zulasse,
Auch Bild Datein koennen Code enthalten. Der Interner Exploid
schickt jede Datei die er bekommt, ungefragt, durch seine Script
Engine.
Das so etwas Natuerlich nicht so toll ist, ist klar.
Ich kann mich erinnern, das es vor ein paar Jahren ein Script in
einem Bild gab, welches das CD-Laumfwerk oeffnete...
da kann ich mir zumindest schon mal sicher sein, dass durch
das Verhindern von serverseitigen Skripten, auf meinem Server kein
Unfug getrieben werden kann.
Ebenso unsicher bin ich mir dabei, ob es Dateien auch mit
zugelassenen Dateiendungen (*.html, *.htm, *.jpg etc.)
irgendwie möglich ist, serverseitige Skripte auszuführen.
(Da hab ich eben zuwenig Ahnung von Skriptausführung auf dem
Server)
*.html, *.htm sind Moeglicherweise in der Lage Serverseitig Code
auszufuehren. Es kommt da drauf an, welche Datei-Typen du dem
Script-Interpreter gibst vgl. PHP Konfiuration des WebServers
oder Perl WebServer Configuration
AddType application/x-httpd-php .php
AddHandler cgi-script .cgi
In beiden, kann ich ohne Probleme auch .html als ausfuehrbar
eintragen. Bei PHP ist es sogar ueblich. (Bei JSP und anderen
Techniken bin ich mir nicht so sicher, aber ich denke auch dort
geht sowat.)
Jetzt hast du 2 Moeglichkeiten, entweder HTML einfach so zu
erlauben.
Oder in dein Script eine Regular Expression einbauen, die prueft
ob die Datei Verdaechtigen Code enthalten koennte, was die
bessere der beiden ist.
Alle Seiten die Code enthalten, werden :
A) zurueck gewiesen
B) Der Code wir aus dem Quelltext geloescht
Ist deine Entscheidung. Ich selbst tendiere eindeutig zu B.
Wenn du dazu Fragen hast, frag mich morgen, oder wen anderes
jederzeit.
gruesse aus'm (schlaefrigem ;) ruhrpott
jens mueller