Sven Rautenberg: Semikolon in MySQL

Beitrag lesen

Moin!

Was passiert, wenn sich jemand unter dem namen ' oder "
anmeldet?

Du kannst generell prüfen, dass im Anmeldenamen nur Buchstaben und Ziffern enthalten sind.

Es macht aber durchaus Sinn, Einträge, die in die Datenbank gehen, _immer_ mit der Funktion mysql_escape_string() in die Datenbank zu schreiben. Diese Funktion sorgt dafür, dass alle Sonderzeichen entsprechend escaped sind, also keinen Schaden anrichten können.

Ja, die Funktion addslashes() macht (bei MySQL) im Prinzip dasselbe. Und außerdem ist noch die Option "magic_quotes_gpc" eingeschaltet, die ohnehin alle Benutzereingaben mit Slashes versieht. Im Prinzip sind alle diese Funktionen also nur dafür da, dass unwissende PHP-Programmierer sich nicht gleich beim ersten Mal die Datenbank zerschießen.

Es ist aber vom Prinzip her besser, wenn du prüfst, ob magic_quotes_gpc eingeschaltet ist, und in diesem Falle dessen Slashes mit stripslashes() entfernst und danach mit mysql_escape_string() den String für die Datenbank vorbereitest, als dich auf Automatismen zu verlassen. Was ist, wenn der Serveradmin plötzlich magic_quotes_gpc ausschaltet? Du wirst davon nichts merken, weil mit "normalen" Daten erstmal alles so läuft wie bisher. Bis es dann irgendwann zu spät ist. Außerdem bist du, wenn du es ordentlich programmierst, systemunabhängig und kannst deine Skripte auf jedem beliebigen PHP-Server laufen lassen, nicht nur auf dem, auf dem du es entwickelt hast.

Reicht dazu die Funktion htmlentities oder htmlspecialchars aus?
Welche ist besser?

Keine dieser Funktionen hilft bei deinem Problem.

- Sven Rautenberg

--
Diese Signatur gilt nur am Freitag.