strip_tags und htmlentities

8

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?

    
Somebody 26.04.2011, 09:18
quelle

4 Antworten

14

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.

    
NikiC 26.04.2011 09:22
quelle
9

strip_tags entfernt alle HTML-Tags:

%Vor%

htmlentities codiert Zeichen, die Sonderzeichen in HTML sind

%Vor%

Wenn Sie htmlentities verwenden, sollte der Benutzer den Text, so wie er eingegeben wurde, nicht als HTML

anzeigen, wenn Sie die Zeichenfolge an den Browser ausgeben %Vor%

Führt visuell zu: & lt; b & gt; foo & lt; / b & gt;

%Vor%

Ergebnisse in: foo

    
nickf 26.04.2011 09:24
quelle
3

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

    
matty 14.11.2012 11:07
quelle
0

Probieren Sie dieses aus und sehen Sie sich die Unterschiede an:

%Vor%

öffne cmd oder dein Terminal und tippe etwas wie folgt:

%Vor%

Dies sollte bekommen, was Sie wollen und sicher!

    
hafidh 20.10.2013 04:01
quelle

Tags und Links