Für welche WP-Funktionen benötigen Sie esc_html () oder esc_url ()?

7

Ich bin auf Situationen gestoßen, in denen Leute entweder esc_html()oder esc_url()mit bestimmten WP-Funktionen wie z home_url('/'). Ein Beispiel ist das öffnende Ankertag des <a>Links zurück zur Homepage wie dieses:

<a href="<?php echo esc_url( home_url( '/' ) ); ?>"> 

Woher wissen Sie, welche WP-Funktionen maskiert werden müssen, und spielt es eine Rolle, ob Sie esc_html()oder verwenden esc_url()?

Jeder Rat oder jede Anleitung wäre wunderbar.

Der Chewy
quelle

Antworten:

10

Alle, die Daten zurückgeben.

  • Wenn eine Funktion intern ausgegeben wird, übernimmt sie die Verantwortung für das Entkommen
  • Wenn eine Funktion die Daten zur Verwendung zurückgibt, werden sie nicht entfernt, um ein doppeltes Entkommen zu vermeiden. Es liegt in Ihrer Verantwortung

Dies liegt daran, dass Sie immer spät entkommen sollten, damit kein Zweifel daran besteht, ob eine Variable maskiert wird.

Wenn die Ausgabe von APIs, wie home_urlsie vorab maskiert wurden, nicht mehr wahr wäre. Es würde auch eine doppelte Flucht einführen, die in einigen Szenarien verwendet werden kann, um die Flucht zu überwinden.

Einige weitere Hinweise:

  • Machen Sie sich nicht die Mühe, statischen Zeichenfolgen zu entkommen, es ist sinnlos
  • Versuchen Sie nicht, Funktionen wie the_permalinkin esc_urlusw. zu verpacken. Escape-Funktionen sind immer noch Funktionen. Sie sind keine magischen Modifikatoren / Textmarker, die PHP anweisen, etwas zu sichern.
  • Geben Sie keine komplexen HTML-Fragmente in Variablen zurück, geben Sie Daten zurück, Daten müssen nicht maskiert werden, aber das Escaping eines komplexen HTML-Fragments ist nicht einfach und normalerweise nicht sicher
  • Stellen Sie bei der Verwendung von Shortcodes / Filtern sicher, dass Sie die hinzugefügten / geänderten Bits maskieren. Lassen Sie den Rest jedoch in Ruhe und vertrauen Sie darauf, dass sie maskiert wurden. Es liegt nicht in Ihrer Verantwortung, die in diesen Situationen an anderer Stelle generierte Ausgabe zu maskieren. Vertrauen Sie ihm jedoch auch nicht als Eingabe, wenn er als Leitfaden für Ihren eigenen Code verwendet wird
Tom J Nowell
quelle
3

Alle Ausgaben nicht vertrauenswürdiger Daten (einschließlich Daten aus der Datenbank) müssen bereinigt werden. WordPress Codex beschreibt verfügbare Funktionen: https://codex.wordpress.org/Data_Validation

Code-Sniffer müssen gemäß den WordPress-Codierungsstandards die Ausgabe auch von WordPress-Kernfunktionen bereinigen. Sie können einen solchen Code-Sniffer beispielsweise in PhpStorm aktivieren.

Manchmal ist eine solche Anforderung zu hoch, aber es ist besser, Codierungsstandards zu befolgen, um zuverlässigeren Code zu erhalten.

KAGG Design
quelle