Was ist der genaue Unterschied zwischen esc_html
und attribute_escape
Filter?
esc_html()
verwendet esc_html filter
und esc_attr()
verwendet attribute_escape filter
. Beide codieren <> & "'(kleiner als, größer als, kaufmännisches Und, doppeltes Anführungszeichen, einfaches Anführungszeichen).
Ich bin interessiert zu wissen, was sie genau in Bezug auf Sicherheit (Flucht) unterscheidet.
esc_attr
,esc_html
das nicht nützlich wäre, warum nichtesc_html
überall verwenden? Wenn es für Sie offensichtlich ist, scheint es keine gute Frage zu sein, aber für den Fragesteller ist es nicht offensichtlich, wie sich diese beiden Funktionen unterscheiden, da beide den erwarteten Zeichen entkommenAntworten:
Es scheint, dass es nach dem Auspacken keinen Unterschied gibt
Der einzige Unterschied zwischen den beiden Funktionen ist der am Ende angewendete Filter. WordPress fügt diesen Filtern nichts hinzu, daher sind sie in einer Standard-WP-Installation keine Operationen. Sie werden im Randfall bereitgestellt, damit jemand sie benötigt.
Schnelle Fragen und Antworten
Also sind sie standardmäßig identisch?
Ja! Die
esc_attr
undesc_html
Funktionen haben die gleiche ImplementierungSind die Filter identisch?
Der einzige Unterschied besteht darin, dass sie unterschiedliche Namen haben, auf die gleiche Weise funktionieren, auf die gleiche Weise verwendet werden und keiner der Filter im Kern verwendet wird.
Tun die Filter etwas?
Nein! Alle Escape-Aktionen werden in der Funktion ausgeführt, wenn
wp_check_invalid_utf8
und_wp_specialchars
aufgerufen werden.Die Filter entkommen nicht, sie bieten Plugins die Möglichkeit, zusätzliche Überprüfungen und Verarbeitungen durchzuführen.
Gibt es Randfälle?
Nur wenn Sie die Filter verwenden, sagen Sie, dass Sie angeschlossen sind,
esc_html
aber nichtattribute_escape
, oder umgekehrt. Bei einer Standard-WP-Installation sind die beiden Funktionen identisch, ohne Unterschied.Warum
attribute_escape
und nichtesc_attr
?Abwärtskompatibilität. Früher gab es eine
attribute_escape
Funktion, die jetzt nach demesc_
Hinzufügen der Stilfunktionen als veraltet markiert wird .Warum sollte ich diese Filter verwenden?
¯\_(ツ)_/¯
Dies wäre eine seltene Situation. Einige Leute missbrauchen es möglicherweise auf die gleiche Weise, wie Übersetzungs-APIs missbraucht werden, um nach Ersatztext zu suchen. Dies ist bereits eine schlechte Praxis, da diese Filter häufig als kleiner Geschwindigkeitsverlust bezeichnet werden, der tausendfach vergrößert wirdBedenken Sie jedoch, dass Sie die Sicherheit dieser Funktionen gefährden können, wenn Sie nicht aufpassen. Aus diesem Grund sind die Filter gefährlich.
Muss ich mir darüber Sorgen machen?
Nein. Sie müssen sich nur Sorgen machen, wenn Sie diese Filter verwendet haben, die für sich genommen massive rote Alarme hätten auslösen müssen, dass etwas in Ihrer Entwicklung ernsthaft schief gelaufen ist.
Die Funktionen
esc_attr
undesc_html
sind sicher zu bedienen und entgehen Inhalten. Sie haben eine ethische und moralische Verpflichtung, sie zu verwenden, wenn Sie die Sicherheit Ihres Codes schätzenHeißt das, ich sollte nur verwenden
esc_html
?Nein, bei der Flucht geht es darum, Erwartungen zu setzen. Wenn Sie ein Attribut erwarten, verwenden Sie
esc_attr
. Nur weil es momentan funktional gleich ist, heißt das nicht, dass sich dies mit einer Sicherheitsversion in Zukunft nicht ändern wirdquelle
esc_html
Filter entkommen undattribute_escape
Filter nicht oder umgekehrt.