¿Es check_plain () suficiente para volver a mostrar el texto ingresado por los usuarios en el navegador, o aún debería filtrar con filter_xss () ?
¿Es check_plain () suficiente para volver a mostrar el texto ingresado por los usuarios en el navegador, o aún debería filtrar con filter_xss () ?
Me imagino que la pregunta es sobre el uso check_plain(filter_xss($string))
, o filter_xss(check_plain($string))
.
check_plain()
y filter_xss()
tienen dos propósitos diferentes, y en contraste:
check_plain()
codifica caracteres especiales en una cadena de texto sin formato que luego se muestra como HTML.filter_xss()
filtra una cadena HTML para evitar vulnerabilidades de cross-site-scripting (XSS). En particular su propósito es:
Si lo usa check_plain()
, se supone que la cadena pasada a la función se usará como texto sin formato; en tal caso, filter_xss()
no es necesario. Si usa filter_xss()
, entonces la cadena pasada a la función se supone que es HTML, y check_plain()
no es necesaria.
Si la pregunta es sobre el uso check_plain()
y filter_xss()
en diferentes partes de la misma cadena, entonces, como señaló greggles en su comentario, puede usar (por ejemplo) check_plain()
en el contenido de los atributos de la etiqueta y filter_xss()
en toda la etiqueta HTML.