Sönke Tesch: addslashes / stripeslashes sinnvoll einsetzen?

Beitrag lesen

Ist es sinnvoll, vor dem Eintrag in die Datenbank addslashes zu verwenden und nach dem Auslesen - kurz bevor die Daten angezeigt werden - die slashes mit stripeslashes zu entfernen? Damit wären die Probleme doch gelöst?

Jein. Die Schrägstriche werden eingefügt, um im SQL-Befehlstext (ich gehe mal davon aus, daß Du SQL benutzt) Zeichen mit besonderer Bedeutung zu maskieren (hauptsächlich die Anführungszeichen). Diese Schrägstriche wandern aber _nicht_ in die Datenbank, sondern werden nur für den Parser benötigt, der Deine Befehlszeile in ihre Einzelteile zerlegt; der Parser ist auch derjenige, der die Schrägstriche sofort wieder entfernt, der Datenbankkern selber hat mit diesen Maskierungen also garnichts mehr zu tun.
Dementsprechend brauchst Du beim Auslesen auch kein stripslashes() einzusetzen, weil dort schlichtweg keine Maskierungen vorkommen.

Bei der Benutzung von addslashes() solltest Du davon mal abgesehen beachten, daß die Datenbankschnittstelle möglicherweise ihre eigene Maskierungsfunktion mitbringt (bei MySQL wäre das mysql_[real_]escape_string()). Diese sind naturgemäß einer Allerweltsfunktion wie addslashes() vorzuziehen.

Last but not least kann es unter Umständen sein, daß Dein PHP bereits so eingestellt ist, daß sämtliche von außen kommenden Daten bereits mit Schrägstrichen versehen sind und nicht mehr extra maskiert werden müssen.
Der Sinn dieser Option verschließt sich mir ein wenig, denn statt des dadurch zwar wegfallenden addslashes()-Aufrufes bei Datenbankbefehlen wird nun der Aufruf von stripslashes() bei der Ausgabe dieser Texte nötig. Der Aufwand ist also mindestens der gleiche.

Gruß,
  soenk.e