Cargando



Como mejorar la seguridad de un sitio web (xss pHp)

Tutorial donde detallo el uso de PHP para los ejemplos pero pueden adaptarse a otros lenguajes de programación para mejorar la seguridad de las webs.


may 16 2014 18:43
may 16 2014 18:47
El desarrollo de un sitio web implica que el programador deba pensar en la seguridad, no solo debemos tener un servidor seguro, sino también aplicar algunas estrategias que pueden ayudar a proteger la web. En este tutorial se usara PHP para los ejemplos pero pueden adaptarse a otros lenguajes de programación.

Utilizar variables de sesiones y no de cookies


Un error que comenten muchos desarrolladores es utilizar cookies, pequeños archivos de texto que para guardar información acerca de nuestras tareas en internet, accesos, etc.

Estas cookies pueden leerse fácilmente desde cualquier navegador, ejemplo en Firefox con firebug o en Chrome con el botón derecho luego vamos al menú Inspeccionar elemento.

xss_php_solvetic.jpg


En la imágen podemos ver un ejemplo de como el programador creo una cookie para login de usuario y expone los datos de acceso públicamente.

La siguiente imagen es otro ejemplo peor Google a indexado los accesos con los usuarios y contraseñas.


xss_php_solvetic2.jpg


Lo correcto es utilizar sesiones que los datos se codifican.


<? session_start();
$_SESSION['clave'] = "clave";
$_SESSION['usuario'] = "usu";
?>

Así se vería la variable de sesión codificada, mucho más segura porque es difícil de leer:

phpsessid=sb85p15841p6l1dfg7oo8hlsc85;


Luego en cada pantalla vamos chequeando la sesión en cada pagina que vamos abriendo, suponemos que sera un área restringida.

[size=4]<? session_start();
if ($_SESSION['usuario'] = "usu") {
		 echo 'sigo en la web';
} else {
		 echo 'no esta logueado';
}
?>[/size]

Las sesiones no son una solución completa ya que otro método de hacking es Session hijacking o Suplantación de sesión. Esto ocurre si al estar logueado un atacante lee el valor de la sesión y luego intenta acceder desde otra computadora.

Para evitar esto podemos crear sesiones que guarden los datos del equipo donde se logueo el usuario.


<? session_start();
		 $_SESSION['REMOTE_ADDR'] = $_SERVER['REMOTE_ADDR'];
		 $_SESSION['HTTP_USER_AGENT'] = $_SERVER['HTTP_USER_AGENT'];
?>

Con el código anterior establecemos una sesión que guarda la ip y el navegador desde donde se accedió a la web, luego chequeamos si mientras la sesión esta activa, alguien intenta loguearse desde otra ip u otro navegador no podrá acceder a la web

[size=4]<? session_start();
		 if($_SESSION['REMOTE_ADDR'] != $_SERVER['REMOTE_ADDR'] || $_SESSION['HTTP_USER_AGENT'] != $_SERVER['HTTP_USER_AGENT']) {
			 exit();
} ?>[/size]


Algo como esto hace Facebook, si accedes desde otro dispositivo o desde otra ip en otra ciudad, ya que va guardando desde que lugar accedes frecuentemente.

Probando Casos de XSS y SQL Injection


Una forma de encontrar web vulnerables es poner en el buscador info_page.php=, o catalogo.php=



Esto nos dará un listado de web vulnerables, cualquier web que termine con .php?variable= puede ser vulnerable.

Para probar si es vulnerable escribimos la url sin valor en la variable ejemplo:


midominio.com/info_page.php?id=


Si la web es vulnerable responderá con un error mysql que dira lo siguiente:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1



Si encontramos algún dominio con esta vulnerabilidad podemos probar, si encontramos la tabla de usuarios o administradores y cuantas columna tiene:

www.midominio/info_page.php?id=-1+union+all+select+1,2,3,group_concat(user_name,0x3a,

user_password),5+from+administrators


En este caso devolverá la clave y usuario administrador, para evitar SQL injetcion, hay que utilizar sesión y no parámetros por url, en caso de utilizarlas limpiar los parámetros con alguna función o clase que verifique que no haya comandos sql, ni javascript en el parámetro que se envia por formulario o por url.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X