Eval() abdichten...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Eval() abdichten...

    Hallo,

    ich lese einen von Besuchern editierbaren Wert aus der Datenbank aus und führe ihn mit eval() aus. Vom Prinzip her eine sehr, sehr schlechte Sache . Mein Problem ist jetzt, dass ich gültige von schädlichen Anweisungen trennen muss. Der Wert darf nur Array-Informationen enthalten. Beispiel für einen gültigen Wert:

    PHP-Code:
    array(
     
    "abc" => "Wert1",
     
    "def" => "$cfg_blabla",
     
    "ghi" => "{$HTTP_POST_VARS['whatever']}"

    Der Wert benötigt kein abschließendes ";", kann aber multidimensionale Arrays enthalten. Ich kenne mich mit RegExp kaum aus, aber ich glaube, dass man mit denen bei rekursiven Strukturen auch nicht viel weiter kommt oder? Das Problem ist, dass das Array ja neben der "abc" => "Wert" - Schreibweise auch einfach nur so aussehen kann: "a", "b", "c".

    Hat jemand eine Idee, wie ich den Wert gegen zerstörenden oder allg. schädlichen Code (Datenspionage mit eingeschlossen), etc. absichern kann ohne alle Funktionen aufzuzählen, die nicht im String vorkommen dürfen (zu unsicher, aufwendig bei neuen PHP-Versionen).

    Vielen Dank schon mal!

    Felix
    Hello World

  • #2
    Code:
    if(  preg_match("|(^array\()(.*?)(\)$)|s", $wert_aus_datanbank) ) 
    { führe befahl aus; }  else {
    echo "is nicht!"; }
    // ungetestet
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar

    Lädt...
    X