Ich erhielt eine Rückmeldung vom Sicherheitsbeamten und er wies darauf hin, dass ich die Benutzereingaben in meinem Code ordnungsgemäß maskieren sollte. Also habe ich einige Nachforschungen angestellt und Fluchtfunktionen gefunden.
Was ist der Unterschied zwischen ihnen? Wann soll ich esc_html()
wann verwenden esc_attr()
? Und wann soll ich diese Funktionen _e()
am Ende nutzen?
Antworten:
esc_html()
entgeht einer Zeichenfolge, damit sie nicht als HTML analysiert wird. Zeichen wie<
werden beispielsweise in konvertiert<
. Dies sieht für den Leser gleich aus, bedeutet jedoch, dass der ausgegebene Wert<script>
vom Browser nicht als tatsächliches Skript-Tag interpretiert wird.Verwenden Sie diese Funktion immer dann, wenn der ausgegebene Wert kein HTML enthalten soll.
esc_attr()
entgeht einer Zeichenfolge, damit sie sicher in einem HTML-Attribut verwendet werden kann, wieclass=""
zum Beispiel. Dies verhindert, dass ein Wert aus dem HTML-Attribut ausbricht. Wenn der Wert beispielsweise lautet"><script>alert();</script>
und Sie versucht haben, ihn in einem HTML-Attribut auszugeben, wird das aktuelle HTML-Tag geschlossen und ein Skript-Tag geöffnet. Das ist unsicher. Wenn Sie dem Wert entkommen, können Sie das HTML-Attribut nicht schließen und unsicheres HTML markieren und ausgeben.Verwenden Sie diese Funktion, wenn Sie einen Wert innerhalb eines HTML-Attributs ausgeben.
esc_url()
maskiert eine Zeichenfolge, um sicherzustellen, dass es sich um eine gültige URL handelt.Verwenden Sie diese Funktion, wenn Sie einen Wert innerhalb eines Attributs
href=""
oder ausgebensrc=""
.esc_textarea()
entgeht einem Wert, damit er sicher in einem<textarea>
Element verwendet werden kann. Durch das Escapezeichen eines Werts mit dieser Funktion wird verhindert, dass ein Wert, der in a ausgegeben wird<textarea<
, das<textarea>
Element schließt und seinen eigenen HTML-Code ausgibt.Verwenden Sie diese Funktion, wenn Sie einen Wert innerhalb eines
<textarea>
Elements ausgeben .esc_html()
undesc_attr()
haben auch Versionen__()
, die mit_e()
und enden_x()
. Diese dienen zur Ausgabe übersetzbarer Zeichenfolgen.Wordpress hat Funktionen,
__()
,_e()
und_x()
, für Text ausgibt , das übersetzt werden kann.__()
liefert eine übersetzbar Zeichenfolge,_e()
Echos ein übersetzbaren String und_x()
einen übersetzbaren String mit einem bestimmten Kontext zurückgibt. Sie haben sie wahrscheinlich schon einmal gesehen.Da Sie nicht unbedingt darauf vertrauen können, dass eine Übersetzungsdatei sichere Werte enthält, wird durch die Verwendung dieser Funktionen bei der Ausgabe einer übersetzbaren Zeichenfolge sichergestellt, dass die ausgegebenen Zeichenfolgen nicht das oben beschriebene Problem verursachen können.
Verwenden Sie diese Funktionen, wenn Sie übersetzbare Zeichenfolgen ausgeben.
quelle
esc_html
und bestehtesc_attr
und derselbe Code verwendet wird (sie haben nur einen anderen nicht verwendeten Filter): wordpress.stackexchange.com/questions/264698/…esc_html
würde innerhalb von HTML zum Beispiel zwischen einem<p>
Tag verwendet werdenesc_attr
würde verwendet werden, um Attributwerte auf HTML-Tags wie folgt zu maskieren:Das Anwenden
_e
bis zum Ende dient zur Verwendung mit Textdomänen und gibt es automatisch für Sie wieder, z. B.:Darüber hinaus
_e
gibt es auch das,__
was dasselbe_e
tut, es aber nicht wiedergibt, sodass Sie es in einer Variablen speichern können.quelle
_e
dient nicht nur dem Echo, sondern auch der Lokalisierung. Daher sollte es nur verwendet werden, wenn eine Zeichenfolge an die Funktion übergeben wird, und sollte eine Textdomäne enthalten. Ihr letztes Beispiel ist der Missbrauch.