PHP injection

Eine theoretische Frage zum Thema IT-Sicherheit:
Ist es möglich, via code injection aus einem String mit eingebetteten Variablen (in welcher der injizierte code steht) ‚auszubrechen‘ und somit ausführbaren PHP code zu injizieren?

Beispiel:

 $name = URL\_ARGUMENT;
 echo " $name ";

Danke schonmal!

Hallo Jerry,

unter der theoretischen Annahme das PHP keine Bugs enthaelt sollte das mit dem Beispiel nicht moeglich sein. So lange du kein eval() o.ae. auf die Variable ausfuehrst sollte der Code nicht ausgefuehrt werden.
Als Entwickler gibt es allerdings auch kaum eine Moeglichkeit so etwas zu verhindern, denn ohne Userinput von aussen sind ziemlich viele dynamische Webseiten (egal ob PHP oder eine andere Sprache) ziemlich sinnfrei.
Um sicher zu gehen sich gegen eventuelle Bugs im Interpreter abzusichern sollte man jew. die aktuellste stabile PHP Version einsetzen oder zumindest eine aktuelle von einem Versionszweig der noch supported wird (aktuell z.B. PHP 5.3.23 wenn man wegen Inkompatibilitaeten nicht von 5.3 auf 5.4 updaten kann)

Eine andere bzw. zusatzeliche Moeglichkeit ungewuenschten Inhalt schon vor dem Interpreter abzufangen sind Webserver-Module wie z.B. ModSecurity, die mit Filterregeln arbeiten.

Das ganze klingt jetzt allerdings auch sehr viel schlimmer als es ist.

Gruss
Stefan

Btw: im Code-Beispiel sollte man zumindest noch die Variable im HTML-String escapen damit man keinen externen ungewuenschten Code durchschleift

PHP Code nicht, siehe andere Antwort, aber JavaScript (XSS). Der Code läuft dann im Kontext deiner Webseite und kann ggf. Cookies oder angezeigte Daten an einen Drittserver (über den Umweg Browser) schicken. Also zumindest ein strip_tags oder htmlspecialchars solltest du aus diesem Grund vor der Ausgabe aufrufen.

Du kannst sehr einfach testen, ob Dein Script gegen JS geschützt ist.
Gib einfach mal alert(„Alarm!“) in deine PHP Variable an. Wenn eine Dialogbox kommt, ist dein Skript über JS angreifbar. Um das zu umgehen siehe den Post vor mir :smile:

Liebe Grüße
Inge