¿Se debería pasar la salida HTML a través de esc_html () Y wp_kses ()?

9

Estoy confundido acerca de los diferentes usos de esc_html() y wp_kses() . Entiendo que esc_html() convierte caracteres especiales a su entidad HTML, y que wp_kses() elimina las etiquetas no deseadas (por ejemplo, <script> ), pero no estoy seguro en qué contextos deben usarse juntas o por separado.

Si ejecuto un poco de HTML no confiable a través de esc_html() , entonces cualquier JavaScript se mostrará en texto sin formato en lugar de ser procesado por el navegador, por lo que es seguro en ese momento, ¿correcto? La única razón para ejecutarlo también a través de wp_kses() sería para evitar que se muestre el script sin formato.

Básicamente, esc_html() lo hace seguro, y wp_kses() lo hace bonito. ¿Es eso correcto?

    
pregunta Ian Dunn 14.10.2011 - 20:52

2 respuestas

14

La regla general, al menos según lo propuesto por Mark Jaquith , es sanear en la entrada, escapar en la salida (el corolario de esta regla es sanear temprano, escapar tarde ).

Entonces: use filtros de desinfección (como la familia kses() ) cuando almacene datos no confiables en la base de datos , y use filtros de escape (es decir, la familia esc_*() ) cuando dé como resultado una no confiable datos en la plantilla .

    
respondido por el Chip Bennett 14.10.2011 - 21:33
12

Las funciones kses deben usarse cuando desee permitir que algún subconjunto de html esté en el resultado. Por ejemplo, los comentarios permiten algo de HTML en ellos para negrita, cursiva, enlaces y demás.

La función esc_html debe usarse para escapar de html por completo. Ningún HTML pasará a través de él sin que se convierta en algo que será interpretado como no HTML por un navegador.

    
respondido por el Otto 14.10.2011 - 21:31

Lea otras preguntas en las etiquetas