Sicher mit MySQL arbeiten

FingerSkill

Erfahrenes Mitglied
Hoi,
hab schon das Forum durchsucht jedoch leider nichts gefunden.

Und hier die Frage: Wie muss ich einen String escapen um ihn sicher in eine MySQL-Datenbank einzutragen. Also ohne die Gefahr auf Injections, CrossSiteScripting, etc...

Vielen Dank im Vorraus.
 
Thx schonmal jedoch ist dann nicht sicher vor CrossSiteScripting oder?

Update: Ausserdem hab ich das grade in der PHP-Doku gefunden:
Anmerkung: Diese Funktion ist seit PHP 4.3.0 veraltet. Benutzen Sie diese Funktion nicht und verwenden Sie stattdessen
 
Also ich benutze STRIP_Tags.
Google hat mir das hier ausgespuckt.

Die einfachsten, aber effektiven Maßnahmen sind bei PHP bereits mitgeliefert:
  • strip_tags - Entfernt Tags aus einer Zeichenkette
  • addslashes - Entschärft alle im String enthaltenen Hochkommata durch Voranstellen von Backslashes
  • htmlentities - Ersetzt alle HTML-Sonderzeichen durch HTML-Code
  • mysql_real_escape_string - Ersetzt in MySQL Kommandos Hochkommata und andere Zeichen
  • escapeshellcmd - Nochmal das gleiche für Shell-Kommandos die
 
Jede Sprache hat ihre eigenen Metazeichen und bietet unterschiedliche Möglichkeiten diese zu maskieren:
  • HTML: Bei HTML sind es die Zeichen <, >, &, " und je nach Kontext auch ', die durch Verwedung von Zeichenreferenzen maskiert werden. PHP bietet dafür beispielsweise die htmlspecialchars()-Funktion oder die htmlentities()-Funktion, wobei letztere noch weitere Zeichen maskiert, was aber abhängig vom verwendeten Zeichensatz beziehungsweise der verwendeten Zeichenkodierung nicht immer nötig ist.
  • MySQL: Bei MySQL sind es vor allem die Zeichenketten-Metazeichen " und ', die durch Voranstellen des Maskierungszeichens \ maskiert werden müssen. Dafür bietet PHP die mysql_real_escape_string()-Funktion; die addslashes()-Funktion tut es aber auch.
Andere Sprachen haben wieder andere Metazeichen und Maskierungen. Das Maskieren der Metazeichen ist aber kein Ersatz für die Validierung oder Filterung der Daten.
 
Zurück