Thomas: $_POST['name'] in mysql Datenbank speichern

Ich würde gerne aus einem Formular heraus die Daten in meine Datenbank speichern. Da habe ich eine Frage zur Sicherheit:
Jemand schreibt etwas in die VAriable name, die dann per POST übergeben wird.

Reicht es da nicht aus die VAR über

mysql_real_escape_string($_POST['name'])

in die MYSQL Datenbank zu schreiben:

oder sollte man sie vorher noch mit

stripslashes und strip_tags

weiter behandeln:

mysql_real_escape_string(strip_tags(stripslashes($_POST['name'])))

Thomas

  1. Hi

    mysql_real_escape_string($_POST['name'])

    in die MYSQL Datenbank zu schreiben:

    oder sollte man sie vorher noch mit

    stripslashes und strip_tags

    weiter behandeln:

    mysql_real_escape_string(strip_tags(stripslashes($_POST['name'])))

    Warum möchtest du denn genau Tags und Slashes entfernen? Wovor hast du Angst, was genau sind deine Bedenken?

  2. Tach!

    Reicht es da nicht aus die VAR über
    mysql_real_escape_string($_POST['name'])
    in die MYSQL Datenbank zu schreiben:

    Es reicht für den Kontext "String in einem SQL-Statement" völlig aus. ("String" verlangt, dass der Wert im Statement in Anführungszeichen eingefasst wurde, sonst bringt das Escapen gar nichts.)

    oder sollte man sie vorher noch mit
    stripslashes und strip_tags
    weiter behandeln:

    stripslashes() benötigst du, wenn du eine uralte PHP-Version vorliegen hast oder eine, bei der der Administrator absichtlich immer noch Magic Quotes aktiviert hat. Magic Quotes verunstalten Eingabedaten, die du - so es bei dir der Fall ist - einmalig am Script-Anfang in verarbeitbare Daten zurückführen solltest.

    strip_tags() bringt im DBMS-Umfeld keine Punkte. Diese Funktion brauchst du nicht aus Sicherheitsgründen, sondern wenn du mit einem recht groben Werkzeug HTML-ähnliche Textbestandteile entfernen möchtest. Sie wird gern verwendet, damit der Anwender keine Chance bekommt, HTML-Code in seinem eingegebenen Text/Kommentar/wasauchimmer unterzubringen. Allerdings können sie noch auf genügend andere Weisen Müll fabrizieren.

    Auch für dich wird die Grundlagenliteratur zum Kontextwechsel hilfreich sein.

    dedlfix.

  3. Hello,

    Ich würde gerne aus einem Formular heraus die Daten in meine Datenbank speichern. Da habe ich eine Frage zur Sicherheit:

    Jemand schreibt etwas in die VAriable name, die dann per POST übergeben wird.

    Reicht es da nicht aus die VAR über
    mysql_real_escape_string($_POST['name'])
    in die MYSQL Datenbank zu schreiben:
    oder sollte man sie vorher noch mit
    stripslashes und strip_tags
    weiter behandeln:

    mysql_real_escape_string(strip_tags(stripslashes($_POST['name'])))

    Nein, es reicht nicht aus, Strings zu escapen, sonden man muss sie auch noch quoten. Aber auf diesen Fehler wird dich ggf. auch die MySQL-SQL-Schnittstelle hinweisen.

    Das Quoten von Strings und die Value-Ermittlung bei Zahlen (oder ebenefalls Quoten) sind äußerst wichtig für die Sicherheit der Datenbank.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://restaurant-zur-kleinen-kapelle.de
    1. Das Quoten von Strings und die Value-Ermittlung bei Zahlen (oder ebenefalls Quoten) sind äußerst wichtig für die Sicherheit der Datenbank.

      Nicht nur für die Sicherheit sondern auch um etwaige unbeabsichtigte Fehler zu vermeiden.