security – ¿Es suficiente check_plain ()?

Pregunta:

¿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 () ?

Respuesta:

Me imagino que la pregunta es sobre el uso de 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 secuencias de comandos entre sitios (XSS). En particular, su finalidad es:

    • Eliminando 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 🙂

Si usa check_plain() , se supone que la cadena pasada a la función debe usarse como texto sin formato; en tal caso, filter_xss() no es necesario. Si usa filter_xss() , entonces se supone que la cadena pasada a la función es HTML, y check_plain() no es necesario.

Si la pregunta es sobre el uso de 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.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım