ezzemm
2009-07-27, 11:32:19
Hallo zusammen!
Bei meinem aktuellen Projekt programmiere ich zum ersten Mal eine Schnittstelle, wo Nutzer Daten über ein Formular in eine SQL-Datenbank abspeichern können. Daher muss ich mich jetzt da mit dem Thema Sicherheit befassen.
Ich habe schon entsprechende Seiten gelesen (http://www.oreilly.de/artikel/php_sicherheit.html); aber dort wird "magic_quotes_gpc" bzw. "addslashes" empfohlen, was ich ziemlich unhandlich finde.
Ich würde das gerne mit "htmlspecialchars" regeln, weil meine eigenen Tests nur mit gespeicherten Strings in der DB endeten und ich z.B. kein Löschen der DB auslösen konnte.
Wie seht ihr das? Ist diese Methode sicher oder ist auch die anfällig für Code-Injection?
$sql = '
UPDATE
'.$db_prefix.'clients
SET
Name = "'.htmlspecialchars($_POST["Name"]).'",
Strasse = "'.htmlspecialchars($_POST["Strasse"]).'",
Zusatz = "'.htmlspecialchars($_POST["Zusatz"]).'",
Plz = "'.htmlspecialchars($_POST["Plz"]).'",
Ort = "'.htmlspecialchars($_POST["Ort"]).'",
WHERE
ID = '.check_decimal_number($_POST['ID']).'
';
PS: In der Funktion check_decimal_number() überprüfe ich ob auch eine Zahl übermittelt wurde, ansonsten wird das Skript beendet.
Bei meinem aktuellen Projekt programmiere ich zum ersten Mal eine Schnittstelle, wo Nutzer Daten über ein Formular in eine SQL-Datenbank abspeichern können. Daher muss ich mich jetzt da mit dem Thema Sicherheit befassen.
Ich habe schon entsprechende Seiten gelesen (http://www.oreilly.de/artikel/php_sicherheit.html); aber dort wird "magic_quotes_gpc" bzw. "addslashes" empfohlen, was ich ziemlich unhandlich finde.
Ich würde das gerne mit "htmlspecialchars" regeln, weil meine eigenen Tests nur mit gespeicherten Strings in der DB endeten und ich z.B. kein Löschen der DB auslösen konnte.
Wie seht ihr das? Ist diese Methode sicher oder ist auch die anfällig für Code-Injection?
$sql = '
UPDATE
'.$db_prefix.'clients
SET
Name = "'.htmlspecialchars($_POST["Name"]).'",
Strasse = "'.htmlspecialchars($_POST["Strasse"]).'",
Zusatz = "'.htmlspecialchars($_POST["Zusatz"]).'",
Plz = "'.htmlspecialchars($_POST["Plz"]).'",
Ort = "'.htmlspecialchars($_POST["Ort"]).'",
WHERE
ID = '.check_decimal_number($_POST['ID']).'
';
PS: In der Funktion check_decimal_number() überprüfe ich ob auch eine Zahl übermittelt wurde, ansonsten wird das Skript beendet.