2012-02-12 24 views
6

Tengo un área de texto donde el usuario puede escribir un artículo. El artículo puede contener texto (negrita y cursiva), enlaces y videos de youtube. ¿Cómo permito esas ciertas etiquetas html y aún publico un código seguro de prevención de xss?¿Cómo permitir ciertas etiquetas html?

Respuesta

11

me gustaría utilizar HTMLPurifier, para garantizar que sólo se mantiene HTML

  • Eso es válido
  • y sólo contiene etiquetas y atributos usted ha elegido para permitir


que debería agregue que PHP proporciona la función strip_tags(), pero no es tan bueno (cotización):

Dado que strip_tags() no valida las etiquetas HTML, parciales o rotas, puede eliminar más texto/datos de lo esperado.

Esta función no modifica los atributos de las etiquetas que que permiten el uso allowable_tags, incluyendo el estilo y onmouseover atributos que un usuario malicioso puede abusar de la hora de escribir texto que se mostrará a otros usuarios.

+0

+1 por hacer una cita de strip_tags() notas –

+0

¡Thx! Parece que htmlpurifier es el camino a seguir. Solo para aclarar; htmlpurifier previene las inyecciones xss, sql y todos los demás códigos peligrosos? – Michael

+1

Lo he usado un par de veces para limpiar la entrada del usuario y asegurarme de que solo contiene las etiquetas que había elegido permitir; si eliges las etiquetas/atributos permitidos cuidadosamente, evitarán XSS. Pero no hará nada con las Inyecciones SQL: ese es otro problema, que resolverás asegurándote de que lo que colocas en las consultas SQL sea seguro * (los enteros deben ser enteros, las cadenas deben escaparse correctamente, ... o debes use declaraciones preparadas) * –

1

Si está buscando una protección XSS real, sugiero usar HTMLPurifier. Hacerlo usted mismo es bastante difícil, si no imposible de hacer. Y está destinado a tener errores (/ agujeros) en él.

Cuestiones relacionadas