Soll ich htmlentities
mit strip_tags
verwenden?
Ich verwende derzeit strip_tags
beim Hinzufügen zur Datenbank und denke darüber nach, htmlentities
bei der Ausgabe zu entfernen. Ich möchte vermeiden, unnötige Verarbeitung beim Generieren von HTML auf dem Server.
Ist es sicher, nur strip_tags
ohne erlaubte Tags zu verwenden?
Erstens: Verwenden Sie die Escaping-Methode nur, sobald Sie sie benötigen. I.e. Wenn Sie etwas in eine Datenbank einfügen, entschlüsseln Sie es nur für die Datenbank, dh mysql_real_escape_string
(oder PDO->quote
oder welche Datenbankebene Sie auch verwenden benutzen). Aber wenden Sie noch kein Escaping für die Ausgabe an. Nein strip_tags
oder ähnlich. Dies liegt daran, dass Sie die in der Datenbank gespeicherten Daten an einer anderen Stelle verwenden möchten, wo HTML-Escaping nicht notwendig ist, sondern den Text nur hässlich macht.
Zweitens: Sie sollten strip_tags
nicht verwenden. Es entfernt die Tags insgesamt. I.e. Der Benutzer erhält nicht die gleiche Ausgabe wie er eingegeben hat. Verwenden Sie stattdessen htmlspecialchars
. Es wird dem Benutzer die gleiche Ausgabe geben, aber es unschädlich machen.
strip_tags
entfernt alle HTML-Tags:
htmlentities
codiert Zeichen, die Sonderzeichen in HTML sind
Wenn Sie htmlentities
verwenden, sollte der Benutzer den Text, so wie er eingegeben wurde, nicht als HTML
Führt visuell zu: & lt; b & gt; foo & lt; / b & gt;
%Vor%Ergebnisse in: foo
Ich würde htmlentities nicht verwenden, da dies es Ihnen erlauben würde, die Zeichenfolge so in die Datenbank einzufügen, dass sie für Kontodetails oder Foren nicht gut ist.
Verwenden Sie mysql_real_escape_string
zum Einfügen in die Datenbank und strip_tags zum Wiederherstellen aus der Datenbank und zum Echo auf dem Bildschirm
Tags und Links php