Filtro en PHP para evitar ataques XSS

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í:

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.
Espero pueda servirles y lo implementen en sus proyectos webs, solo me toca aclarar que pueden introducir más caracteres en el filtro, mientras más caracteres y elementos, más seguridad tendrás...

Comenta con Facebook

No hay comentarios

                   

¿Quieres mantenerte informado sobre este artículo? Descarga nuestro Software en tu PC▼