Olaf: Frage zu SQL Injection

Hallo miteinander,

ich bastele gerade ein HTML Formular, das Kundendaten aufnimmt und dann über ein Script auswertung.php in eine Datenbank übernimmt.

Jetzt möchte ich es natürlich den Spaßvögeln schwer machen, die mit einer SQL Injection die Datenbank manipulieren wollen.

Übergeben werden nur Name, Adresse, PLZ, Ort, Land, Tel, Email, das Übliche eben.

Mache ich denn auswertung.php sicher, wenn ich mit addslashes() arbeite, so etwa:

foreach($_GET as $key=>$value)
 {
   $_GET["$key"] = addslashes($value);
 }

Oder soll ich auch noch die Länge der Strings überprüfen, da ich auch nicht will, dass mir jemand als Adresse den kompletten Bibel-Text übergibt.

Und: bin ich mit diesen beiden Methoden dann auf der sicheren Seite?

Dank und Gruss

Olaf

  1. hi,

    Mache ich denn auswertung.php sicher, wenn ich mit addslashes() arbeite,

    Nutze die Maskierungsfunktion, die für die von dir verwendete Datenbank die korrekte ist - für MySQL wäre das mysql_real_escape_string().

    Oder soll ich auch noch die Länge der Strings überprüfen, da ich auch nicht will, dass mir jemand als Adresse den kompletten Bibel-Text übergibt.

    Zu Lange Inhalte werden idR. einfach abgeschnitten.
    Aber sich darauf zu verlassen, wäre unschön und dilettantisch.
    Oder wäre es schön, wenn mein Posting beispielsweise hi

    (Oder wäre es schön, wenn mein Posting beispielsweise hi^H^Hdort oben so geendet hätte, weil mein Beitrag die Maximallänge, die abgespeichert wird, überschritten hätte?)

    Und: bin ich mit diesen beiden Methoden dann auf der sicheren Seite?

    Im Großen und Ganzen: Ja.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Vielen Dank !

      Gruss

      Olaf

      1. echo $begrüßung;

        Zu beachten ist außerdem noch, dass PHP einen Mechanismus namens Magic Quotes kennt, der in Abhängigkeit der Konfigurationseinstellungen aktiv ist oder nicht.

        echo "$verabschiedung $name";