Sollte die HTML-Ausgabe über esc_html () UND wp_kses () übergeben werden?


11

Ich bin verwirrt über die verschiedenen Verwendungen von esc_html()und wp_kses(). Ich verstehe, dass esc_html()Sonderzeichen in ihre HTML-Entität konvertiert werden und wp_kses()unerwünschte Tags (z. B. <script>) entfernt werden, bin mir jedoch nicht sicher, in welchen Kontexten sie zusammen oder getrennt verwendet werden sollen.

Wenn ich nicht vertrauenswürdiges HTML durchführe esc_html(), wird JavaScript im Klartext angezeigt und nicht vom Browser gerendert. An diesem Punkt ist es also sicher, richtig? Der einzige Grund, es auch durchzulaufen, wp_kses()wäre zu vermeiden, dass das Rohskript angezeigt wird?

Grundsätzlich esc_html()macht es sicher und wp_kses()macht es hübsch. Ist das korrekt?

Antworten:


16

Die allgemeine Regel, zumindest wie von Mark Jaquith vertreten , lautet: Desinfizieren bei Eingabe, Flucht bei Ausgabe (die Folge dieser Regel ist frühes Desinfizieren , spätes Entkommen ).

Verwenden Sie also kses()beim Speichern nicht vertrauenswürdiger Daten in der Datenbank Bereinigungsfilter (z. B. die Familie) und esc_*()beim Ausgeben nicht vertrauenswürdiger Daten in der Vorlage Escape-Filter (z. B. die Familie) .


14

Die kses-Funktionen sollten verwendet werden, wenn Sie möchten, dass eine Teilmenge von HTML im Ergebnis enthalten ist. In Kommentaren ist beispielsweise HTML-Code für Fettdruck, Kursivschrift, Links usw. zulässig.

Die Funktion esc_html sollte verwendet werden, um HTML vollständig zu maskieren. Kein HTML wird durchlaufen, ohne in etwas konvertiert zu werden, das von einem Browser als Nicht-HTML interpretiert wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.