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.
 

Neue Beiträge

Zurück