Hallo
Ich programmiere gerade an einer Homepage, die u.A. auch Daten aus einer Datenbank liest bzw. auch gelegentlich Daten in die DB schreibt. Ich verwende dazu die Funktion mysql_query. Auf der DB habe ich einen Benutzer angelegt, der nur Rechte für die Datenbank hat, auf der meine Daten liegen (auf meinem Webaccount kann ich leider keine Benutzer selbst anlegen, d.h. ich habe einen Benutzer auf der DB, der alle Rechte auf die ihm zur Verfügung stehenden Datenbank hat; Ich würde sonst einen Benutzer anlegen, der nur Leserechte hat und dann einen Benutzer, der nur Schreibrechte hat und den geringen Teil im Quellcode, der auf die DB schreibt, besonders absichern).
Ich habe nun von den Sicherheitsproblemen gehört, die auftreten, wenn man von Script zu Script Benutzereingaben überträgt (ich muss gew. Daten übertragen). Zwar kann ein potentieller Hacker keine Benutzerberechtigungen in der DB verändern und sich somit Zugang zum DB-Server verschaffen (ich arbeite wie oben erwähnt mit einem normalen Benutzer), er kann aber meine Daten in der DB doch einigermaßen verändern, was mich ebenfalls stören würde. Ich habe nun probiert, an einen per GET übertragenen Wert mittels "; INSERT INTO usw" ein zweites Statement anzuhängen, was nicht funktionierte (es lieferte auch keine Fehlermeldung). Kann man mit der Funktion "mysql_query" immer nur ein SQL Statement ausführen? Ich habe mir auch gedacht, dass ich jeden übergebenen Parameter (auch Integer und Date Werte) in Hochkomma setze (im WHERE Zweig), denn dann werden die veränderten Befehle wenigstens nur als Inhalte interpretiert und ein Hackversuch endet in einem SQL Fehler. Sind diese Maßnahmen ausreichend oder fällt jemandem noch ein Sicherheitsloch auf?
Wie verhindert ihr in euren Scripten SQL Injections?
Ich programmiere gerade an einer Homepage, die u.A. auch Daten aus einer Datenbank liest bzw. auch gelegentlich Daten in die DB schreibt. Ich verwende dazu die Funktion mysql_query. Auf der DB habe ich einen Benutzer angelegt, der nur Rechte für die Datenbank hat, auf der meine Daten liegen (auf meinem Webaccount kann ich leider keine Benutzer selbst anlegen, d.h. ich habe einen Benutzer auf der DB, der alle Rechte auf die ihm zur Verfügung stehenden Datenbank hat; Ich würde sonst einen Benutzer anlegen, der nur Leserechte hat und dann einen Benutzer, der nur Schreibrechte hat und den geringen Teil im Quellcode, der auf die DB schreibt, besonders absichern).
Ich habe nun von den Sicherheitsproblemen gehört, die auftreten, wenn man von Script zu Script Benutzereingaben überträgt (ich muss gew. Daten übertragen). Zwar kann ein potentieller Hacker keine Benutzerberechtigungen in der DB verändern und sich somit Zugang zum DB-Server verschaffen (ich arbeite wie oben erwähnt mit einem normalen Benutzer), er kann aber meine Daten in der DB doch einigermaßen verändern, was mich ebenfalls stören würde. Ich habe nun probiert, an einen per GET übertragenen Wert mittels "; INSERT INTO usw" ein zweites Statement anzuhängen, was nicht funktionierte (es lieferte auch keine Fehlermeldung). Kann man mit der Funktion "mysql_query" immer nur ein SQL Statement ausführen? Ich habe mir auch gedacht, dass ich jeden übergebenen Parameter (auch Integer und Date Werte) in Hochkomma setze (im WHERE Zweig), denn dann werden die veränderten Befehle wenigstens nur als Inhalte interpretiert und ein Hackversuch endet in einem SQL Fehler. Sind diese Maßnahmen ausreichend oder fällt jemandem noch ein Sicherheitsloch auf?
Wie verhindert ihr in euren Scripten SQL Injections?
Kommentar