Recibí comentarios del encargado de seguridad y él señaló que debería usar el escape apropiado de la entrada del usuario en mi código. Así que investigué un poco y encontré funciones de escape.
¿Cual es la diferencia entre ellos? ¿Cuándo debo usar esc_html()
y cuándo esc_attr()
? ¿Y cuándo debo usar estas funciones _e()
al final?
Respuestas:
esc_html()
escapa a una cadena para que no se analice como HTML. Caracteres como<
se convierten<
, por ejemplo. Esto se verá igual para el lector, pero significa que si el valor que se genera es<script>
el navegador no lo interpretará como una etiqueta de script real.Utilice esta función siempre que el valor que se envíe no contenga HTML.
esc_attr()
escapa a una cadena para que sea segura de usar en un atributo HTML, comoclass=""
por ejemplo. Esto evita que un valor salga del atributo HTML. Por ejemplo, si el valor es"><script>alert();</script>
y trató de generarlo en un atributo HTML, cerraría la etiqueta HTML actual y abriría una etiqueta de script. Esto no es seguro. Al escapar del valor, no podrá cerrar el atributo HTML y etiquetar y generar HTML inseguro.Utilice esta función al generar un valor dentro de un atributo HTML.
esc_url()
escapa una cadena para asegurarse de que sea una URL válida.Utilice esta función al generar un valor dentro de un atributo
href=""
osrc=""
.esc_textarea()
escapa a un valor para que sea seguro usarlo en un<textarea>
elemento. Al escapar de un valor con esta función, evita que un valor generado dentro<textarea<
de a cierre el<textarea>
elemento y genere su propio HTML.Use esta función al generar un valor dentro de un
<textarea>
elemento.esc_html()
yesc_attr()
también tienen versiones que terminan en__()
,_e()
y_x()
. Estos son para la producción de cadenas traducibles.WordPress tiene funciones
__()
,_e()
y_x()
, para la salida de texto que puede ser traducido.__()
devuelve una cadena traducible,_e()
repite una cadena traducible y_x()
devuelve una cadena traducible con un contexto dado. Probablemente los hayas visto antes.Dado que no puede confiar necesariamente en que un archivo de traducción contenga valores seguros, el uso de estas funciones al generar una cadena traducible garantiza que las cadenas que se emiten no puedan causar el mismo problema descrito anteriormente.
Use estas funciones cuando envíe cadenas traducibles.
fuente
esc_html
yesc_attr
, se usa el mismo código (solo tienen un filtro diferente sin usar): wordpress.stackexchange.com/questions/264698/…esc_html
se usaría dentro de html, por ejemplo, entre una<p>
etiquetaesc_attr
se usaría para escapar de valores de atributos en etiquetas html de esta manera:aplicar
_e
al final es para usarlo con dominios de texto y lo repetirá automáticamente, por ejemplo:Además de
_e
que también hay lo__
que hace lo mismo_e
pero no hace eco para que pueda almacenarlo en una variable.fuente
_e
no es solo para hacer eco, es para localización. Por lo tanto, solo debe usarse cuando se pasa una cadena a la función, y debe incluir un dominio de texto. Tu último ejemplo es usarlo mal.