![]() Mailinglisten-Archive |
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