Ataques XSS, como prevenirlos en PHP

Ataques XSS, como prevenirlos en PHP

Los ataques XSS (Cross Site Scripting)  suelen ser la forma más habitual que emplean los piratas informáticos para atacar una página web. Para ello se aprovechan de ciertos fallos de seguridad, sobre todo, en el filtrado y validación de campos de entrada. A través de los cuales puede enviar script o comandos maliciosos que nos afectan tanto a nuestro sitio web como al pc del usuario que nos visita.

             Un ejemplo básico de ataque mediante XSS o inyección de código puede ser

http://www.ataquexss-php.com/search?p=<script>alert(‘Hola-mundo’)</script>

En esta ocasión el ataque se reduce a mostrar un mensaje de alerta en el equipo del usuario que nos visita, dado que el código HTML solo se ejecuta en el equipo del cliente no en el servidor. Este inofensivo ataque se ha aprovechado de una vulnerabilidad en un campo de entrada, el buscador. Podría haber sufrido un ataque más dañino, como el robo de información confidencial alojada en su equipo.

Cuando desarrollamos un sitio web con PHP debemos tener cuidado con formularios, buscadores, lugares susceptibles para poder llevar a cabo un ataque mediante XSS. Por lo que debemos siempre verificar toda la información que nos faciliten los usuarios, filtrando determinados caracteres especiales que potencialmente pueden ser peligrosos.

Para ello PHP dispone de una serie de funciones que pueden sernos útiles a la hora de proteger nuestra web frente a posibles ataques mediante XSS. Hoy veremos algunas de ellas, como strip_tags o Input Filter.

Strip_tags  es una función que nos permite limpiar cualquier etiqueta html que ha ingresado el usuario, de esta forma evitaremos los ataques más básicos, pero frente a un ataque más elaborado puede no ser suficiente.

PHP Input Filter  es una clase desarrollada en PHP para el filtrado del posible código malicioso que se pueda insertar a través de un formulario. Para poder emplear necesitamos descargar la clase de la web oficial , incluir el archivo class.inputfilter.php al inicio y crear una instancia de la clase InputFilter

require_once("class.inputfilter.php");
$ifilter = new InputFilter();

Veamos un ejemplo, si tenemos un formulario en nuestra web que envía los datos por el método POST, con el siguiente código filtraríamos todos los campos de forma rapida y sencilla.

require_once("class.inputfilter.php");
$ifilter = new InputFilter();
$_POST = $ifilter->process($_POST);

La clase InputFilter nos da la posibilidad de permitir que ciertas etiquetas o atributos puedan ser utilizadas por los usuarios, para ello solo necesitamos pasarle un array con el nombre de las  etiquetas o atributos cuando creamos la instancia de la clase. Por lo que quedaría de la siguiente forma:

require_once("class.inputfilter.php");
$ifilter = new InputFilter( array(‘em’,’strong’);
$ifilteraux=new InputFilter(array(’a’),array(‘href’));

La instancia ifilter permitiría la inclusión de las etiquetas em y strong en el formulario, mientras que la instancia ifilteraux permitiría el empleo del atributo href para que los usuarios puedan incluir enlaces en el formulario.

Una aplicación que puede sernos de gran utilidad es XSSploit  nos permitirá localizar las vulnerabilidades de nuestra web antes de publicarla y evitar muchos problemas en el futuro.

Tags de búsquedas:

tutorial de zebra form php,ataque xss php,php proteger ataques xss,prevenir ataques xss utf-7 en php,proteccion xss,protección xss en php,Proteger formulario php de inyeccion de codigo,proteger formularios php,Proteger mi php xss,proteger mi web contra xss,protejer el buscador de ataques,session php ataque,php para evitar xss,input_filter php manual,htaccess proteccion inyeccion codigo pagina php

Noticias relacionadas »

2 comentarios en Ataques XSS, como prevenirlos en PHP

  1. / Responder

    Exelente este articulo me ayudo a solucionar los diferentes problemas de xss que mantenia mi sitio web.

  2. Felipe
    / Responder

    Es muy util la clase, mi duda es si el mismo objeto creado de la clase se puede usar para diferentes variables es decir algo así

    require_once("class.inputfilter.php");
    $ifilter = new InputFilter();
    $nombre = $ifilter-&gt;process($_POST['nombre']);
    $apellido = $ifiltrer-&gt;process($_POST['apellido']);
     etc...
    

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Invertir en criptomonedas: »

 

Cómo comprar bitcoin

Invertir y comprar Bitcoin y otras altcoins es más fácil de lo que crees.

1) Si sólo quieres comprar Bitcoin, Ethereum o Litecoin como inversión, tu opción es Coinbase

2) Si quieres probar con otras criptomonedas tu opción es Binance

3) Cualquier duda escríbeme con total libertad al formulario de contacto para resolver dudas: https://www.pedroventura.com/contacto/

¡Comparte este artículo! »

  • Pedro (1 min)
    Buenos días Margherita El plugin está obsoleto y ya no…
  • Juan Carlos Díaz (10 horas)
    Este grupo de Telegram me ha dado muy buenas señales…
  • Margherita (21 horas)
    Hola, tengo un problema con el plugin. Tanto en la…
  • Pablo H (2 semanas)
    Hola Pedro, Muchas gracias por el post, me fue muy…
  • Pedro Ventura (2 semanas)
    Hola Margat Muchísimas gracias por tu comentario, me alegro de…
  • Pedro Ventura (2 semanas)
    Hola Rebeca, Tan sólo se permite 1 dominio por cuenta.…

Suscríbete al newsletter »

Proporciona tu correo electrónico a continuación y recibe las últimas noticias! Funciona con Feedburner de Google

Archivo »

Leer entrada anterior
Softwares de optimización de PC

Para quienes no conocen, existen softwares que pueden optimizar y mejorar el funcionamiento de nuestra computadora de manera extraordinaria. Recomendado sobre todo...

Cerrar