SQL Injection



  • Hallo,

    folgendes Problem: Eine Plattform gibt die Möglichkeit einen Eintrag anhand eines Namen zu suchen. D.h. es gibt ein Text-Inputfeld, das auf eine weitere Seite übertragen wird, die entsprechend nach dem Eintrag sucht.

    Nun ja, wenn z.B. ein SQL-Statement folgendermaßen aussieht:

    "
    SELECT *
    FROM `TABLE`
    WHERE name='$name'
    "
    

    Wäre eine SQL-Injection kein Problem. Ein Escape würde hierbei jedoch auch nicht weiterhelfen, da der Name (falls es eine Escape Modifikation gibt) sich ändert und somit keine Übereinstimmung existiert.

    Der Einzige Ansatz wäre, bereits beim Eintrag ein Escape durchzuführen, damit dann auch der Suchname das gleiche "Escape-Format" hat.

    Evt. gibt jemand von euch mal ein Statement dazu.

    Bye



  • JayJay schrieb:

    Ein Escape würde hierbei jedoch auch nicht weiterhelfen, da der Name (falls es eine Escape Modifikation gibt) sich ändert und somit keine Übereinstimmung existiert.

    Nein. Ein Escape heisst nur "Das, was jetzt folgt, ist kein Meta-Zeichen". Das heisst, innerhalb der Datenbank wird wieder mit dem nicht-escapten String gearbeitet.



  • unterstütz die dbapi preparet statements?



  • SG1 schrieb:

    JayJay schrieb:

    Ein Escape würde hierbei jedoch auch nicht weiterhelfen, da der Name (falls es eine Escape Modifikation gibt) sich ändert und somit keine Übereinstimmung existiert.

    Nein. Ein Escape heisst nur "Das, was jetzt folgt, ist kein Meta-Zeichen". Das heisst, innerhalb der Datenbank wird wieder mit dem nicht-escapten String gearbeitet.

    D.h. wenn ich den Datensatz dann auslese habe ich wieder einen "escapten" Text!?


  • Mod

    escape("Hallo Welt")=="Hallo Welt"
    escape("Hallo 'Welt'")=="Hallo \'Welt\'"
    escape("Hallo "Welt"")== syntax error

    schau dir einfach mal an was ein escape character ist, auch sogenannte meta zeichen.


Log in to reply