Absicherung von Benutzereingaben



  • Hi,
    die Suche mag mich wohl nicht oder es gibt tatsächlich nichts zu dem thema.

    Situation: ich wähle mithilfe von

    index.php?page=name
    

    eine Seite aus. diese wird über eine MySQL-Datenbank dann ausgegeben. (vereinfacht gesagt). nun hab ich das Problem, dass ich auf jeden Fall SQL Injection verhindern muss.
    PROBLEM: es können wörter wie

    SELECT
    LIKE
    DROP
    usw.
    

    vorkommen.
    mein erster Gedanke war "Oh Mist", der zweite führte mich dann über eine Textdatei zu einer recht einfachen Lösung (auf den ersten Blick):
    Ich erstelle per Cron oder anderem (scripte etc.) eine Textdatei, in der die Namen der "Seiten" stehen. Probleme: die Datei kann bei mehreren tausend Seitennamen (evtl. als CSV) recht groß werden. Außerdem funktioniert das nur auf Webservern, bei denen das Script Schreibrechte hat (bei SF.net müsste das ins /temp rein, was auch schlecht wäre).

    Any Hints? Erfahrungen? Links? Code?

    ➡ C167


  • Mod

    wo ist das problem? du "escapest" den string einfach (mysqli_real_escape_string) und machst deine anfrage an die DB... wenn du kein ergebnis bekommst, gibts die datei nicht... und gut ist.

    oder verstehe ich etwas falsch?



  • [quote="Shade Of Mine"]wo ist das problem? du "escapest" den string einfach (mysqli_real_escape_string) und machst deine anfrage an die DB... wenn du kein ergebnis bekommst, gibts die datei nicht... und gut ist.

    oder verstehe ich etwas falsch?[/quote]

    hm, das wäre evtl. was, ich arbeite halt mit

    PEAR::DB
    

    , mal schaun, obs da was änliches gibt.
    aber reicht es denn, alles durch diese oder eine vergleichbare Funktion zu jagen? dann wäre SQL-Injection bei fast allen MySQL-Basierten PHP-Scripten nahezu ausgeschlossen, wenn man konsequent diese Funktion bemüht, oder nicht?

    danke für den Tipp



  • So ist es! 😉

    Nur viele Denken nicht daran oder haben teilweise sehr kompliziert SQL-Anfragen, die3 teilweise komplett dynamisch generiert werden und es aus technischen Gründen sehr schwer ist.



  • hm, okay. ich hab eben gemerkt, dass PEAR::DB nichtmehr weiterentwickelt wird, und hab mal MDB2 genommen. der sagt mir aber, dasser das mysqli-plugin in PHP braucht, was ich nicht habe, und das auch nicht als debian-packet vorliegt(?) mal schaun


Anmelden zum Antworten