Primero, lea sobre esto en la API de Drupal:
Por lo tanto, check_plain()
codifica caracteres especiales que tienen un significado especial en HTML (como <
y &
) en entidades de texto sin formato (es decir, <
y &
respectivamente) que harán que estos se representen literalmente (no interpretados como HTML) cuando esa cadena se muestre como parte de una página con Marcado HTML. La función filter_xss()
filtra una cadena HTML para evitar vulnerabilidades de cross-site-scripting (XSS). Hace cuatro cosas:
- Eliminar personajes y construcciones que pueden engañar a los navegadores
- Asegurarse de que todas las entidades HTML estén bien formadas
- Asegurarse de que todas las etiquetas y atributos HTML estén bien formados
- Asegurarse de que ninguna etiqueta HTML contenga URL con un protocolo no permitido (por ejemplo, javascript :)
Ambas funciones se utilizan para desinfectar los datos de los usuarios para asegurarse de que cualquier inyección del usuario se neutralice antes de que los datos se muestren en su sitio.
Nunca pasas la misma secuencia a través de ambos .
Si lo usa check_plain()
, se supone que la cadena pasada a la función se usará como texto sin formato (no HTML). Entonces filter_xss()
no es necesario, ya check_plain()
que siempre hará que la cadena sea texto plano.
Si lo usa filter_xss()
, se supone que la cadena que se pasa a la función es HTML y la check_plain()
estropeará.
Cuando miro la plantilla que usa como ejemplo, me parece que los tres campos pasados print()
provienen de contenido que ya está desinfectado y no necesita más saneamiento.
Sin embargo, si crea su propio módulo que recopila la entrada del usuario sin pasarlo por un filtro de texto "seguro" como "HTML filtrado" o "Normal", debe utilizar estas funciones para fines de saneamiento.
filter_xss()
cuando desee filtrar XSS de contenido potencialmente peligroso (es decir, contenido de un usuario no confiable), ycheck_plain()
cuando desee escapar de caracteres especiales HTML de una cadena