perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5382
davon online: 1
weitere User: 36
Click for quality!




26.05.2012 / 01:28

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Server Side Includes: Sicherheitsprobleme

Über die Sicherheitsprobleme wird viel gesprochen und diskutiert. Tatsache ist, daß SSI eine große Lücke im System sein können, wenn man bei der Implementierung nicht richtig aufpaßt. Die Probleme beziehen sich dabei auf das Attribut exec, mit dem man einen beliebigen Shell-Befehl auf dem Server ausführen kann, indem der Befehl einfach per SSI-Tag in die Seite eingefügt wird, z.B.

<--#exec cmd="format c:"-->

Im ersten Moment denkt man, so ein Blödsinn, wer vernichtet denn seinen eigenen Server? Aber das ist gar nicht das Problem, sondern SSI-Scripts, die Inhalte über Usereingaben erzeugen und auch ausgeben. Hier wäre es dann möglich einen SSI-Befehl einzugeben, der dann beim nächsten Aufruf aufgeführt wird und erheblichen Schaden anrichten kann - wie etwas ein Gästebuch-Script.

Um dieses Problem zu umgehen, können 2 Wege eingeschlagen werden:

  • Die Aktivierung von SSI in Apache mit der Option IncludesNOEXEC, was zur Folge hat, daß die Befehle "exec" und "include" nicht verwendet werden dürfen bzw. "include" nur dann, wenn es sich nicht um ein CGI-Programm handelt. Damit ist das Sicherheitsproblem beseitig, aber es können eben keine Programme mehr per SSI eingebaut werden.

  • Die zweite Vorgehensweise aktiviert die SSI-Option mit "Includes" - läßt aber bei Usereingaben keine spitzen Klammern (<>) zu bzw. wandelt diese in Ihren maskierten Wert um und die Befehle können nicht mehr ausgeführt werden. Wer auf Nummer sicher gehen will, sollte grundsätzlich die Eingabe von HTML-Tag verhindern - somit kann auch das Layout nicht zerschossen werden. Dies ist einfach über die folgende Zeile zu erreichen:

    $var =~ s/<([^>]|\n)*>/ /g;

    bzw in abgeschwächter Form

    $var =~ s/\>/\&gt\;/g ;
    $var =~ s/\</\&lt\;/g ;


zurück Seiten: 1 - 2 - 3 - 4 - 5 - Drucken weiter


Kommentare

29.03.2004 - 12:22 | Dave | keine E-Mail
Ich hätte da ne relativ einfache Lösung: Der Bereich wo du die Datei in deine .shtml inclu... Kommentar anzeigen
-
02.10.2003 - 18:59 | Herbert Unterlechner | contact@banana.at
SSI für Dummies! Hab SSI probiert, läuft super.... Aber: Wie bekomme ich es hin, dass e... Kommentar anzeigen
-

Kommentar anfügen







-
-