¿Cuál es la diferencia exacta entre esc_html
y attribute_escape
filtro?
esc_html()
usos esc_html filter
y esc_attr()
usos attribute_escape filter
. Ambos codifican <> & "'(menor que, mayor que, ampersand, comillas dobles, comillas simples).
Me interesa saber qué los hace diferentes en términos de seguridad (escape).
esc_attr
que se escapa y queesc_html
no es útil, después de todo, ¿por qué no usarlo enesc_html
todas partes? Si es obvio para usted, puede no parecer una buena pregunta, pero no es obvio para el que pregunta cómo difieren estas 2 funciones dado que ambas escapan de los personajes esperadosRespuestas:
Parece que fuera de la caja, no hay diferencia
La única diferencia entre las 2 funciones es el filtro aplicado al final. WordPress no agrega nada a estos filtros, por lo que en una instalación estándar de WP no funcionan. Se proporcionan en el caso límite de que alguien pueda necesitarlos.
Preguntas y respuestas rápidas
Entonces, ¿por defecto son idénticos?
¡Si! Las funciones
esc_attr
yesc_html
tienen la misma implementación¿Son idénticos los filtros?
La única diferencia es que tienen nombres diferentes, funcionan de la misma manera, se usan de la misma manera y ninguno de los filtros se usa en el núcleo.
¿Los filtros hacen algo?
¡No! Todo el escape se realiza en la función cuando
wp_check_invalid_utf8
y_wp_specialchars
se llama.Los filtros no escapan, son una oportunidad para que los complementos realicen verificaciones y procesamientos adicionales.
¿Hay casos límite?
Solo si usa los filtros, digamos que se conectó
esc_html
pero noattribute_escape
, o viceversa. Para una instalación WP estándar, las 2 funciones son idénticas, sin diferencia.¿Por qué
attribute_escape
y noesc_attr
?Compatibilidad al revés. Solía haber una
attribute_escape
función, que ahora está marcada como obsoleta después de queesc_
se agregaron las funciones de estilo.¿Por qué usaría estos filtros?
¯\_(ツ)_/¯
Esta sería una situación rara. Algunas personas pueden abusar de él de la misma manera que se abusa de las API de traducción para buscar texto de reemplazo. Esto ya es una mala práctica, ya que esos filtros se llaman mucho, una pequeña pérdida de velocidad se magnifica miles de vecesPero tenga en cuenta que si no tiene cuidado, puede comprometer la seguridad de estas funciones deshaciendo el escape que agregaron o agregando contenido no escapado al final. Por eso los filtros son peligrosos.
¿Debo preocuparme por esto?
No. Solo debe preocuparse si ha utilizado esos filtros, que por sí mismos deberían haber activado alarmas rojas masivas de que algo en su desarrollo salió muy mal.
Las funciones
esc_attr
yesc_html
son seguras de usar, y escapar de contenido. Tiene la obligación ética y moral de usarlos si valora la seguridad de su código¿Esto significa que debería usar
esc_html
?No, escapar se trata de establecer expectativas. Si espera un atributo, use
esc_attr
. El hecho de que sea funcionalmente el mismo en este momento no significa que eso no cambie en el futuro con un lanzamiento de seguridadfuente
esc_html
filtro se escape y elattribute_escape
filtro no, o viceversa.