sql >> Base de Datos >  >> RDS >> Mysql

¿Es Markdown (con strip_tags) suficiente para detener los ataques XSS?

Creo que eliminar cualquier etiqueta HTML de la entrada le dará algo bastante seguro, excepto si alguien encuentra una manera de inyectar algunos datos realmente desordenados en Markdown, haciendo que genere una salida aún más desordenada ^^

Aún así, aquí hay dos cosas que me vienen a la mente:

Primero: strip_tags no es una función milagrosa:tiene algunas fallas...
Por ejemplo, eliminará todo lo que está después de '<', en una situación como esta:

$str = "10 appels is <than 12 apples";
var_dump(strip_tags($str));

El resultado que obtengo es:

string '10 appels is ' (length=13)

Lo cual no es tan bueno para sus usuarios :-(


Segundo: Un día u otro, es posible que desee permitir algunas etiquetas/atributos HTML; o, incluso hoy, es posible que desee asegurarse de que Markdown no genere algunas etiquetas/atributos HTML.

Puede que te interese algo como HTMLPurifier :le permite especificar qué etiquetas y atributos deben conservarse, y filtra una cadena, para que solo queden esos.

También genera código HTML válido, lo que siempre es bueno ;-)