Dieses Ding macht meine Codierung schwierig. Der Wordpress-Codex begründet die Verwendung von esc_url, indem er vage über Sicherheit spricht. Aber ist es die Mühe wirklich wert?
Was ist zum Beispiel der wichtige praktische Sicherheitsvorteil bei der Verwendung?
<?php echo esc_url( home_url( '/' ) ); ?>
Anstatt von
<?php echo home_url() ?>
PS: Ich spreche nicht von der Themenentwicklung, sondern von einer bestimmten Site.
home_url()
home_url
Nun, alle Benutzereingaben sollten bereinigt werden ... Wenn die URL, die Sie einfügen, keine Benutzereingaben sind (z. B. Site-Einstellungen von jemandem, dem Sie voll vertrauen, fest codierte Werte), können Sie sich von der Esc-URL befreien.
Aber wenn ich diese URL in Ihre Site einfügen könnte, könnte ich leicht js-Code oder Umleitungscode einfügen ... oder in einigen Situationen sogar serverseitigen Code.
Dies kann dazu führen, dass Sitzungen entführt werden und Ihre Benutzerkonten gestohlen werden und andere schlechte Optionen verfügbar sind.
Bearbeiten:
In Ihrem Beispiel wurde
esc_url( home_url( '/' ) );
ein halbhart codierter Wert verwendet! daher
esc_url
beseitigt werden.Das heißt, ich verstehe immer noch nicht, warum ich die Unterscheidung zwischen einer Bedrohung und einer Nichtbedrohung stören sollte, und würde im Allgemeinen vorschlagen, esc_url () für jeden Wert beizubehalten.
quelle
Eine andere Sache, die Sie im Kopf behalten müssen,
esc_url()
ist für etwas wie<a href="SANITIZE_THIS_URL">your_text</a>
.wenn Sie die URL in Ihrer HTML-Ausgabe verwenden möchten, wie ein href-Attribut für einen Link oder ein src-Attribut für ein Bildelement, das Sie verwenden solltenesc_url()
.esc_url_raw()
ist für andere Fälle, in denen Sie eine saubere URL möchten, aber nicht möchten, dass HTML-Entitäten codiert werden. Jede Nicht-HTML-Verwendung (DB, Redirect) würde dies verwenden.Die
esc_url_raw()
Funktion funktioniert fast genauso wieesc_url()
, entschlüsselt jedoch keine Entitäten, was bedeutet, dass & nicht durch & # 038 usw. ersetzt wird. Wie Mark betonte, ist die Verwendungesc_url_raw()
in Datenbankabfragen, Weiterleitungen und HTTP-Funktionen wie "wp_remote_get ()" für weitere Informationen zu esc_url_raw () sicher.quelle
esc_url wird verwendet, um einen gültigen HTML- Code zu erstellen (um Eingaben nicht zu bereinigen). Sie sollten dies immer dann verwenden, wenn Sie nicht 100% sicher sind, dass das, was Sie ausgeben möchten, ein gültiger HTML-Code für diesen Kontext ist.
quelle