Seguridad De Tu Web PHP |
![]() |
| | Herramientas | Buscar en Tema | Desplegado |
| ||||
Como Mejorar la Seguridad De una Web Bueno estoy escribiendo este Tutorial (volviendo al foro a aportar ^^) debido a q en todos lados hay info de cómo hackear, hachear, juackear, crackear, phrakear… y todo lo q termine en ear XD. Pero no he visto nada diciendo Como evitar que me hackeen MI web. Bueno aquí una lista de Recomendaciones y Consejos de cómo solucionar algunos posibles fallos de seguridad ^^. RFI (remote file inclusion) Este método es muy comúnmente usado Miremos estos scripts: <?php $page = $_GET[algo].".php"; include($page); ?> o <?php header("Location: ".$_GET['page']); ?> o Esta es una Manera Incorrecta de tratar de impedir la inclusión de archivos, se puede en vez de http:// por ftp:// <?php $page = $_GET[algo].".php"; $page = str_replace('http://','',$page); include($page); ?> Es por si colocan algún http:// donde debería estar la variable. Si en sus webs manejan algunos de los anteriores scripts de seguro su web será vulnerable, lo q pasa es q no filtra nada de lo q pasa por el método GET, una de las tantas formas q hay para solucionarlo es con un método switch así: <?php switch (trim($_GET['algo'])) { case '1': $file = '1.php'; break; case '2': $file = '2.php'; break; default: $file = 'home.php'; break; include($file); } ?> La url seria algo así http://url.com/inde.php?algo=1 e incluiría 1.php y si la variable se deja sola o no existe se incluye home.php y error solucionado, además de un switch se pueden con arrays, con if .... (si alguien quiere expandir un poco mas de como hacerlo aparte de un switch seria de mucha ayuda ) Ataques XSS El ataque por xss fundamental sirve para robar cookies, redireccionar, sacar alertas..., muchas veces se encuentran estas vulnerabilidades en buscadores de las webs, en algunas variables, donde se pueda agregar algo de código html, en foros, registros.... Para filtrar un poco una variable a estos ataques se podría colocar algo así: <?php $query_cont = preg_replace("#<script#i","<|script",$query_cont); echo $query_cont; ?> Pero con esto no se esta 100% seguro, por q pueden decodificar signos como >,<, /,'," y no hay q olvidar q un ataque por xss no se limita por un simple <script></script> Mas Info en estos links http://us3.php.net/htmlspecialchars http://us3.php.net/striptags Lo mejor q se puede hacer es si no se esta seguro, es no colocar buscadores en su web, en foros o guestbooks.. o lo q sea, no permitir code html aunque en algunos paquetes buenos dejan activado html, pero solo deja la entrada de algunas etiquetas inofensivas, así q no hay problema en algunos casos Inyecciones SQL Pues el tema de evitar inyecciones sql es algo complicado, lo mas lógico seria filtrar bien lo q pase por estas variables $_GET, $_POST y $_COOKIE o en esta variable global $_SERVER['HTTP_USER_AGENT'] donde se podría insertar directamente code en el Quero. Vamos una función para filtrar algunos signos function filtrar($variable) { if($variable){ $variable=str_replace("&","& ",$variable); $variable=str_replace("'","'",$variable); $variable=str_replace("´","'",$variable); $variable=str_replace("`","'",$variable); $variable=str_replace("\"","" ",$variable); }else unset($variable); return $variable; } Como tambien se deben filtrar 1 => '--', 2 => "'", 3 => '%', 4 => '=', 5 => '"', 6 => '.', 7 => ',', 8 => ';', 9 => 'union', 10 => 'UNION', 11 => 'insert', 12 => 'INSERT', 13 => 'delete', 14 => 'DELETE', 15 => 'drop', 16 => 'DROP', 17 => 'update', 18 => 'UPDATE', 19 => 'like', 20 => 'LIKE', 21 => '*', 22 => '?', 23 => '(', 24 => ')', 25 => 'and', 26 => 'AND', 27 => 'or', 28 => 'OR', Utilizados en estas inyecciones sql, otro tema q se pudiera anexar seria las blinds sql q constan de "' and 1" de esto no recuerdo mucho pero son muy buenas esta clase de inyecciones Como Banear IPs Pues no esta bueno este método por q se pueden hacer cadenas de Proxy’s y seria como una perdida de tiempo esto pero igual sirve como para aprender por si alguien siente curiosidad :<?php $ip = "xx.xxx.xxx.xx"; if($_SERVER['REMOTE_ADDR'] == $ip){ echo("Coneccion rechazada xD."); }else{ header('Location: http://www.google.com'); } ?> Para banear varias ips se podría de esta forma pero trabajar con .txts no es recomendable por esto mismo de la seguridad, es mejor trabajarlo desde la Base de Datos pero aquí dejo el script como ejemplo: <?php $handle = fopen("rango_de_ips.txt", "r"); $tmp = fread($handle, filesize("ips.txt")); fclose($handle); $list = explode("\n", $tmp); for ($i=0; $i<count($list); $i++) { if($list[$i] <> $_SERVER['REMOTE_ADDR']) { header('Location: http://www.google.com'); }else{ echo ("Coneccion rechazada"); } } ?> Como evitar registros automáticos, flood por medio de un código de seguridad Para este método es necesario contar con la librería GD en nuestro host ya q con esto es la q trabaja, lo q hace es impedir q bots o programas para hacer D.O.S. sobrecarguen la web de tantas peticiones, ya q al no haber algo de impida X numero de peticiones o este mal programado se puede hacer una denegación de servicio, este método esta muy de moda por estos días y ahora vamos a ver de como evitar todo eso en las webs, para servidores mas adelante Una cosa manejar la librería GD y hacer este código de seguridad es algo mas complicado a solo colocar un script cualquiera aquí solo voy a mostrar uno q encontré en Internet: <? session_start(); // Iniciamos la sesion $numero_aleatorio = rand(1000,9999); // Generamos el numero con rand $_SESSION[cod] = $numero_aleatorio; // Guardamos el numero en la sesion //Indicamos que el documento va a ser una imagen header ("Content-type: image/png"); //Declaramos im con la creacion de una imagen $im = @ImageCreate (80, 25); //Declaramos el color de fondo RGB $color_fondo = ImageColorAllocate ($im, 0, 155, 255); //Declaramos tambien el color del texto tambien RGB $color_texto = ImageColorAllocate ($im, 255, 255, 255); //Creamos el Texto dentro de la imagen ImageString ($im, 12, 20, 5, $_SESSION[cod], $color_texto); //Por ultimo creamos la imagen png ImagePng ($im); ?> y en otra web revisamos si son iguales los datos así: <? if($confirmacion == $_SESSION[cod]) { print "Codigo correcto"; }else{ print "error"; } ?> Para evitar esta clase de ataques en servidores se podría utilizar el modsecurity para el apache q es como un firewall q bloquea cualquier intento de intrusión mas información en http://www.modsecurity.org/download/ =) Explicación sacada de shellsec ModSecurity es una herramienta para la detección y prevención de intrusiones para aplicaciones web, lo que podríamos denominar como "firewall web". Este motor funciona como módulo de Apache, incrementando la seguridad del servidor web frente a ataques de tipo tanto conocido como desconocido. Ayuda a evitar, entre otros tipos de ataque: • Técnicas anti-evasión • Supervisa código HTML y cookies • Análisis de los contenidos pasados al servidor mediante el método POST • Permite realizar completas auditorías de los POSTs realizados • Soporta HTTPS • Soporta contenidos comprimidos • etc.. La instalación y configuración en Apache no resulta excesivamente complicada, para lo cual sólo es necesario instalarlo como módulo y activar unas ciertas reglas en el fichero de configuración httpd.conf, y puede ser usado con otros módulos (como Snort o mod_rewrite) para obtener una mayor funcionalidad. ---------------- Algunas recomendaciones *Seria bueno si esta trabajando con registros en su web no maneje las secciones por medio de cookies o si las usa intente con métodos de encriptación como md5() y base64_encode() *Proteja sus directorios con un .htaccess o con un simple index.html (asi sea en blanco) para q no puedan entrar y ver q tienen sus directorios Bueno espero q les sea de ayuda a algunos q se estén tirando de los cabellos por la seguridad de su web xD, espero q les guste el tuto. Y q les aproveche. Recuerden Expandir cada día mas sus conocimientos y compártanlo con los demás, para q todos podamos aprender . Salu2 ![]() Gracias a GracuM Agreguen mas Info de Seguridad, faltan muchísimas cosas. =)
__________________ Solo hay 2 cosas infinitas, el Universo y la estupides humana... Y no estoy seguro del Universo - Albert Einstein ![]() LaserDance UnderGround Security Team |
| Recomendamos |
![]() |
| Etiquetas |
| php, seguridad, web |
« Tema Anterior
|
Próximo Tema »
| Herramientas | Buscar en Tema |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Pregunta abierta: Mi seguridad? | El Experto | Sexualidad | 0 | 09-jul-2008 14:50 |
| Pregunta abierta: ayuda seguridad? | El Experto | Problemas con tu PC | 0 | 08-jul-2008 03:10 |
| Pregunta abierta: Seguridad mucha seguridad para mi pc??? | El Experto | Problemas con tu PC | 0 | 05-jun-2008 06:20 |
| Pregunta abierta: Seguridad Infantil? | Snake | Informática | 0 | 06-mar-2008 06:30 |
| 16 Programas (S.O.Seguridad.etc.) | omar_x64 | Descargar WareZ | 7 | 04-mar-2008 08:29 |
Desarrollado por: vBulletin® Versión 3.7.2
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.







)
:
. 



Mode Lineal

