Eddie: Stringbehandlung für <form>, sql, normale Ausgabe

Hallo allerseits,

Ich frage Eingaben per Formular ab, diese Eingaben werden in eine Datenbank geschrieben und direkt wieder angezeigt und zwar diesmal sowohl im Formular, also auch normal.

Meine Frage ist ganz einfach: bin ich mit folgender Vorgehensweise vollkommen auf der sicheren Seite, oder muss ich noch andere Dinge beachten?

a) die User-Eingabe sicher machen, so dass mir keiner meine SQL-Befehle zerschiessen kann:
reicht da 'addslashes(String x)' aus?

b) die Datenbankergebnisse so hinbiegen, dass ich eine Ausgabe in ein Formular machen kann:
TEXTFIELDS (<input...>): 'htmlentities (htmlspecialchars (String x))'
TEXTAREAS: htmlentities(String x)
?

c) die Datenbankergebnisse so hinbiegen, dass ich eine normale Ausgabe machen kann:
einfach nur 'htmlentities(String x)' ???

Sind mit dieser Verwahrensweise dann alle Probleme gegessen???

Danke fuer jeden Kommentar!!!

Eddie

  1. Hallo allerseits,

    nabend zurück,

    Ich persönlich mache meine Formulare immer mit strip_tags (kommt halt drauf an was der nutzer darf und was nicht) sicher, ist wohl das sicherste allerdings sollte htmlenties auch reichen ...

    Prost C_buster_G

  2. Ich frage Eingaben per Formular ab, diese Eingaben werden in eine Datenbank geschrieben und direkt wieder angezeigt und zwar diesmal sowohl im Formular, also auch normal.

    Meine Frage ist ganz einfach: bin ich mit folgender Vorgehensweise vollkommen auf der sicheren Seite, oder muss ich noch andere Dinge beachten?

    a) die User-Eingabe sicher machen, so dass mir keiner meine SQL-Befehle zerschiessen kann:
    reicht da 'addslashes(String x)' aus?

    Das sollte wohl reichen, es gibt aber für einige Datenbanken auch eigene Funktionen, mysql_escape_string() zum Beispiel. Sollte man vielleicht vorziehen.

    b) die Datenbankergebnisse so hinbiegen, dass ich eine Ausgabe in ein Formular machen kann:
    TEXTFIELDS (<input...>): 'htmlentities (htmlspecialchars (String x))'

    Warum rufst Du htmlentities() zweimal auf, einmal normal und einmal in der abgeschwächten Version htmlspecialchars()? Damit machst Du aus dem Text "<strong>Hallöle" erst "<strong>Hallöle" und dann "&lt;strong&gt;Hallöle". Angezeigt wird's dann als "<strong>Hallöle", nicht in der doch sicher gewünschten Urform "<strong>Hallöle".

    Kurz: Für sämtliche Ausgaben in die Seite sollte htmlentities() reichen.

    Gruß,
      soenk.e