L'output HTML deve essere passato attraverso esc_html () AND wp_kses ()?


11

Sono confuso sui diversi usi di esc_html()e wp_kses(). Comprendo che esc_html()converte i caratteri speciali nella loro entità HTML e che wp_kses()rimuove i tag indesiderati (ad esempio, <script>), ma non sono sicuro in quali contesti debbano essere utilizzati insieme o separatamente.

Se eseguo codice HTML non attendibile esc_html(), qualsiasi codice JavaScript verrà visualizzato in testo normale anziché essere visualizzato dal browser, quindi è sicuro a quel punto, giusto? L'unico motivo per eseguirlo anche wp_kses()sarebbe evitare di visualizzare lo script non elaborato?

Fondamentalmente, lo esc_html()rende sicuro e lo wp_kses()rende carino. È corretto?

Risposte:


16

La regola generale, almeno come adottata da Mark Jaquith , è sanitizzata sull'input, fuga sull'output (il corollario di questa regola è sanificazione precoce, fuga tardi ).

Quindi: utilizzare i filtri di sanitizzazione (come la kses()famiglia) quando si archiviano dati non attendibili nel database e utilizzare i filtri di escape (ovvero la esc_*()famiglia) quando si generano dati non attendibili nel modello .


14

Le funzioni di kses dovrebbero essere usate quando si desidera consentire a un sottoinsieme di HTML di essere nel risultato. Ad esempio, i commenti consentono un po 'di HTML in essi per grassetto, corsivo, collegamenti e così via.

La funzione esc_html dovrebbe essere usata per sfuggire completamente all'html. Nessun HTML lo attraverserà senza essere convertito in qualcosa che verrà interpretato come non HTML da un browser.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.