Existen diversos métodos para burlar este tipo de ataques XSS, publicamos un artículo no hace mucho que explica como evitar inyección de código en formularios utilizando funciones en PHP, estas funciones son eficaces, pero no totalmente.
Por ejemplo la función strip_tags(), esta función se encarga de eliminar cualquier elemento HTML y etiquetas PHP sin tener ningún efecto sobre la página, claro, esto sucede si el código de protección sería algo así:
También se puede elegir que caracteres no deberán eliminarse y hay esta un error de esta función, la elección sería de esta forma:
Aunque desde las versiones: 5.0.0 y 4.3.0 strip_tags() ahora es segura a nivel binario y Los comentarios HTML ahora siempre son retirados.
NOTA: Esta función no modifica los atributos de las etiquetas que se permitan mediante allowable_tags, incluyendo los los atributos style y onmouseover que un usuario malicioso puede abusar al postear texto que se mostrará a otros usuarios.
Vamos a utilizar str_replace() Está se encargará de reemplazar por nada y/o borrar la etiqueta que vamos a elegir para que no sea generada, de esta forma: Con eso, básicamente no se estaría permitiendo ejecutar código que contenga variable script, entonces, la utilización sería:
Puedes seguir sucesivamente con todos los elementos de cada lenguaje de programación, bueno, para no extenderme demasiado simplemente les dejaré el código de un filtro completo y seguro que programe:
Este filtro se encargara de eliminar los caracteres y elementos como:
Por ejemplo la función strip_tags(), esta función se encarga de eliminar cualquier elemento HTML y etiquetas PHP sin tener ningún efecto sobre la página, claro, esto sucede si el código de protección sería algo así:
Vista previa
Se generará así:También se puede elegir que caracteres no deberán eliminarse y hay esta un error de esta función, la elección sería de esta forma:
Vista previa
Se generará con las etiquetas aceptadas:Aunque desde las versiones: 5.0.0 y 4.3.0 strip_tags() ahora es segura a nivel binario y Los comentarios HTML ahora siempre son retirados.
NOTA: Esta función no modifica los atributos de las etiquetas que se permitan mediante allowable_tags, incluyendo los los atributos style y onmouseover que un usuario malicioso puede abusar al postear texto que se mostrará a otros usuarios.
Un Filtro en PHP
Una función en PHP no solucionaría genéricamente todas las variables y códigos maliciosos que sean introducidos, así que utilizaremos y armaremos un filtro en php que bloquee elementos de distintos lenguajes de programación.Vamos a utilizar str_replace() Está se encargará de reemplazar por nada y/o borrar la etiqueta que vamos a elegir para que no sea generada, de esta forma: Con eso, básicamente no se estaría permitiendo ejecutar código que contenga variable script, entonces, la utilización sería:
Vista previa
Se generaría en la página así:Puedes seguir sucesivamente con todos los elementos de cada lenguaje de programación, bueno, para no extenderme demasiado simplemente les dejaré el código de un filtro completo y seguro que programe:
Vista previa
Este filtro te protegerá de diversos códigos, entre ellos:Este filtro se encargara de eliminar los caracteres y elementos como:
- Código General: <, >, {, }, [, ], (, ), /, \\.
- Código PHP: function, php, echo, print, return.
- Código HTML: html, body, head.
- Código JavaScript: script.
- Código Ajax, XML entre otros: xml, version, encoding.
- Código CSS: style.