it-swarm.com.de

Ist check_plain () genug?

Reicht check_plain () aus, um den von Benutzern im Browser eingegebenen Text erneut anzuzeigen, oder sollte ich trotzdem mit filter_xss () filtern?

16
Citricguy

Ich stelle mir vor, die Frage betrifft die Verwendung von check_plain(filter_xss($string)) oder filter_xss(check_plain($string)).

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

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

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

Wenn Sie check_plain() verwenden, soll die an die Funktion übergebene Zeichenfolge als einfacher Text verwendet werden. In diesem Fall ist filter_xss() nicht erforderlich. Wenn Sie filter_xss() verwenden, sollte 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 derselben Zeichenfolge geht, können Sie, wie in seinem Kommentar erwähnt, (z. B.) check_plain() für verwenden den Inhalt der Tag-Attribute und filter_xss() für das gesamte HTML-Tag.

26
kiamlaluno