phpbar.de logo

Mailinglisten-Archive

[php] eval ohne Sicherheitl�cken

[php] eval ohne Sicherheitl�cken

Martin Rozmus martinrozmus at freenet.de
Mit Feb 4 17:12:18 CET 2004


Hallo Bastian,
On Monday 02 February 2004 19:55, Bastian Haustein wrote:
> Hallo zusammen!
>
> ich habe folgendes "Problem": Ich m�chte es Benutzern erlauben Formeln und
> logische Ausdr�cke mit bestimmten Variablen einzugeben, ohne dadurch eine
> Sicherheitsl�cke entstehen zu lassen. Am sch�nsten w�re es dann, den
> Ausdruck mit eval auszuf�hren, etwa so:
>
> <snip>
> $ausdruck = "$i>=50"; //Also der Benutzer hat "$i>=50" eingegeben
> $ausdruck = "return ".$ausdruck.';';
> if(@eval($ausdruck)) echo "Stimmt!";
> </snip>
>
> Mein Problem ist, das der ausdruck ja auch so manipuliert werden kann, dass
> er ein Sicherheitsrisiko darstellt, z.B.:
>
> <snip>
> $ausdruck="echo $geheinmesdatenbankpasswort"; //oder
> $ausdruck="include 'hackerscript.php';"       //oder
> $ausdruck="mysql_query('DROP something FROM tabelle');"
> </snip>
>
> oder so. Daher l�sche ich aus dem Ausdruck im Moment alle Anf�hrungszeichen
> und Klammern, bevor ich ihn mit eval ausf�hre:
>
> <snip>
> if(@eval(strtr("'\"()[]{}","        ",$ausdruck))) echo "Stimmt!";
> </snip>
>
> IMHO sollte es damit nicht mehr m�glich sein, irgendwelchen "Mist"
> auszuf�hren. Nun die Frage:
Entwickle doch eine Metasprache mit Befehlen, Kontrollstrukturen etc. und lass 
die Eingabe des Benutzers mit PHP parsen. Dann ist alles verboten, was nicht 
explizit erlaubt ist.

-- 
MfG
Martin Rozmus

martinrozmus at freenet.de



php::bar PHP Wiki   -   Listenarchive