Ist check_plain () ausreichend?

16

Ist check_plain () genug für die Wieder Darstellung des Textes von Nutzern im Browser eingegeben haben , oder sollte ich noch Filter mit filter_xss () ?

Citricguy
quelle

Antworten:

26

Ich stelle mir vor, es geht um die Verwendung von check_plain(filter_xss($string))oder filter_xss(check_plain($string)).

check_plain()und filter_xss()haben zwei verschiedene und im Gegensatz dazu Zwecke:

  • check_plain() codiert Sonderzeichen in einer Klartextzeichenfolge, die dann als HTML angezeigt wird.
  • filter_xss()filtert eine HTML-Zeichenfolge, um Sicherheitsanfälligkeiten durch Cross-Site-Scripting (XSS) zu vermeiden. Insbesondere ist sein Zweck:

    • Entfernen von Zeichen und Konstrukten, die Browser überlisten können
    • Stellen Sie sicher, dass alle HTML-Entitäten korrekt formatiert sind
    • Stellen Sie sicher, dass alle HTML-Tags und -Attribute korrekt formatiert sind
    • Stellen Sie sicher, dass keine HTML-Tags URLs mit einem nicht zulässigen Protokoll enthalten (z. B. Javascript :)

Wenn Sie verwenden check_plain(), soll die an die Funktion übergebene Zeichenfolge als einfacher Text verwendet werden. in diesem Fall filter_xss()ist nicht erforderlich. Wenn Sie verwenden filter_xss(), soll die an die Funktion übergebene Zeichenfolge HTML sein und check_plain()ist nicht erforderlich.

Wenn es bei der Frage um die Verwendung von check_plain()und filter_xss()für verschiedene Teile desselben Strings geht, können Sie, wie in seinem Kommentar hervorgehoben, (zum Beispiel) check_plain()den Inhalt von Tag-Attributen und filter_xss()das gesamte HTML-Tag verwenden.

kiamlaluno
quelle
5
filter_xss soll für ganze HTML-Teile verwendet werden. Wenn Sie filter_xss für ein HTML-Attribut verwenden, wird es nicht richtig gefiltert. check_plain kann verwendet werden, um HTML-Attribute sicher zu filtern. Weitere Informationen zur Verwendung dieser Funktionen finden Sie auch unter drupalscout.com/knowledge-base/… und drupalscout.com/knowledge-base/… .
Greggles