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
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,caracteres peligrosos php,clases para filtrar posts php,php proteger ataques xss,uso de input-filter

Redirección 301

Se trata de configurar una página web para que, cuando llegue el robot del buscador, éste sepa que la página se ha movido definitivamente a otra nueva dirección (URL). Mediante este redireccionamiento, se traspasarán al mismo tiempo los valores de PageRank y de backlinks que ya disponíamos en nuestra vieja URL.
Este número 301 se trata realmente de un 'estado' del servidor web. Al igual que nos encontramos con los mensajes '404 Not Found' o '500 Internal Server Error', el '301 Moved Permanently' se trata de un estado de losestándares del protocolo HTTP.
Sin embargo, este estado se puede crear fácilmente por parte del webmaster, si éste tiene acceso a herramientas de programación del lado del servidor (PHP o ASP, por ejemplo o a la configuración del propio servidor.
Redirección 301 con PHP (en la página que queramos redireccionar) 
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.nueva-direccion.com" );
?>
Redirección 301 con ASP (en la página que queramos redireccionar) 
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://www.nueva-direccion.com"
%>
Mediante RedirectMatch 301 (módulo 'mod_alias' de Apache)
Echa un vistazo al manual de este servidor web.

todo lo que debes saber para Optimiza el rendimiento de tu web


En la pasada Tenerife LAN Party, impartí una conferencia sobre la eficiencia en sitios web, titulada Optimizar el rendimiento web. Estuvo dirigida principalmente a propietarios de sitios web, y se trataron conceptos, trucos y consejos para mejorar el rendimiento de cualquier tipo de web (velocidad de acceso, transferencia mensual, posicionamiento, etc...).
La conferencia fue impartida gracias al Cabildo de Tenerife y a Innova7.
La conferencia constó de varias secciones, entre las que se encuentran las siguientes:
  • Conceptos: Un resumen rápido de términos y conceptos que se utilizaron frecuentemente durante la conferencia.
  • Esquema cliente-servidor: Funcionamiento del modelo cliente-servidor y sus características en cuanto a la optimización de velocidad.
  • Tecnología: Que tecnologías participan en un sitio web y como deberían estar organizadas y separadas.
  • Trucos y consejos: Una serie de numerosos e interesantes consejos para mejorar el rendimiento de nuestra web.
  • Google Webmaster Tools: Un repaso a las herramientas de Webmasters de Google, echando un vistazo a sus opciones y características.
  • CDN: Cloudflare: Por último, definición y ventajas de utilizar un CDN, junto a un breve repaso de las funciones principales del excelente Cloudflare.
Como siempre, las diapositivas completas, utilizadas en la conferencia, están colgadas en SlideShare: TLP2k12: Optimización del rendimiento web.

1. Introducción

Antes de empezar, hay que dejar claros los cuatro factores principales que tendremos en mente cuando nos decidimos a optimizar nuestro sitio:
  • Velocidad: Nuestro sitio web tiene que cargarse lo más rápido posible, obteniendo una buena respuesta, lo más próxima a una carga instantánea.
  • Eficiencia: El servidor debe estar disponible para realizar las peticiones que le pedimos lo más rápido posible. No debe estar ocupado ni demorarse mucho en procesarlas.
  • Transferencia: Hay que reducir lo máximo posible la cantidad de datos (Megabytes, Gigabytes, Terabytes...) que se consumen al mes. La mayoría de las compañías establecen costes por superar ciertas cantidades de transferencia, por no hablar de que cuanto menos tamaño ocupen los recursos que pedimos, menos tardarán en descargarse.
  • Posicionamiento: Aunque no es una de las finalidades principales de la conferencia, muchas de estas técnicas te pueden ayudar en el atractivo objetivo de aparecer en una mejor posición en Google.

CommentFB