Nota: Me ocupo de la inyección de SQL y de la salida que se escapa en otro lugar: esta pregunta se trata solo del filtrado de entrada, gracias.Filtrado de entrada de usuario: ¿necesito filtrar HTML?
Estoy en medio de la refactorización de las funciones de filtrado de entrada de mi usuario. Antes de pasar el parámetro/POST GET a un filtro de tipo específico con filter_var() hago lo siguiente:
- de verificación de la codificación de parámetros con mb_detect_encoding()
- convertir a UTF-8 con iconv() (con // IGNORE) si es no ASCII o
- limpios los espacios en blanco con a function found on GnuCitizen.org
- pasar el resultado a través de strip_tags() 8 UTF-- no hay etiquetas permitidas en absoluto, de rebajas única
Ahora la pregunta: ¿tiene sentido pasar el parámetro a un filtro como htmLawed o HTML Purifier, o puedo pensar que la entrada es segura? Me parece que estos dos difieren principalmente en la granularidad de los elementos y atributos HTML permitidos (que no me interesan, ya que elimino todo), pero los documentos htmLawed tienen una sección sobre 'dangerous characters' que sugiere que podría haber un motivo para usarlo En este caso, ¿cuál sería una configuración sensata para ello?
El carácter peligroso podría ser caracteres de control UTF-8. – Jacco
¿Alguna sugerencia sobre cómo deshacerse de ellos? – djn
Realmente no recibo su nota, la Inyección de SQL se trata de prevenir la entrada de usuarios desagradables en una consulta sql. De hecho, la mayoría de las vulnerabilidades se deben a INPUT desagradable, no a la salida. Estas se llaman vulnerabilidades de "Mancha y hundimiento". – rook