Autor
|
Tema: Programacion Segura con PHP [Olvidate de limpiar tus variables] (Leído 18,220 veces)
|
Azielito
no es
Colaborador
Desconectado
Mensajes: 9.188
>.<
|
Pues eso, referente a este post Recorriendo el array $_POST y regresandolo a variableshttp://foro.elhacker.net/index.php/topic,164157.0.htmlSe hizo una funcion para olvidarnos de estar limpiando cada vez nuestras variables Como todos sabemos podemos poner el archivo de conexion a la base de datos en un archivo, y, entonces mandamos a llamarlo y listo Ahora bien, que pasa si antes de hacer la conexion limpiamos todas las variables que pasan por GET o POST (o por cookie)? asi tendremos siempre limpias nuestras variables y evitamos ataques XSS y SQLi El archivo final es este <?php # Funcion para limpiar caracte- # res que pudieran comprometer # al servidor y/o al usuario function limpia($var){ $malo = array("\\",";","\'","'"); // Aqui poner caracteres no permitidos while($i<=$o){ $i++; } return $var; } # Funcion que aplica la funcion anterior # para no tener que preocuparnos por # ataques de XSS o SQLi function LimpiarTodo($datos){ }else{ die("<font color=#ff0000><b>Error:</b></font> La funcion <b>LimpiarTodo</b> debe contener un arreglo."); } return $datos; } if($_POST){ $_POST =& LimpiarTodo($_POST); } if($_GET){ $_GET =& LimpiarTodo($_GET); } # FileName="Connection_php_mysql.htm" # Type="MYSQL" # HTTP="true" $hostname_DB = "localhost"; // El host del MySQL $database_DB = "DataBase"; // Nombre de la base de datos $username_DB = "usuar10"; // Usuario con l que te conectas $password_DB = "th3pas5sz"; // Contraseña ñ_ñ ?>
Ahora solo nos queda insertar ese archivo cuando hacemos alguna operacion en MySQL y listo! nos olvidamos de limpiar las variables una a una para evitar los ataques antes mencionados
Para evitar ataques de RFI entonces en esta linea $malo = array("\\",";","\'","'"); // Aqui poner caracteres no permitidos agregamos los dos puntos ( ":" ) y la diagonal ( "/" ) si sabemos que nunca se usaran estos caracteres en los campos de nuestra base de datos Quedaria asi $malo = array("\\",";","\'","'",":","/"); // Aqui poner caracteres no permitidos y quedamos seguros evitando que nos metan los "caracteres malditos"
|
|
« Última modificación: 5 Septiembre 2007, 16:50 pm por Azielito »
|
En línea
|
|
|
|
Alex_bro
Desconectado
Mensajes: 1.246
|
Muy util el script . Yo lo estoy usando, pero me salio el siguiente error: Notice: Undefined offset: 6 in... A que se debe? Uso register_globals off por si tiene algo que ver, aunque creo que no. Por cierto... encontre un script para la misma funcion, que aniade los AND, OR, comas, parentesis... es necesario o no como el de arriba? Pongo el que digo aqui: (perdonen la fuente... no la tengo) <? function antiinjection($str) { $banchars = array ("'", ",", ";", "--", ")", "(","\n","\r"); $banwords = array (" or "," OR "," Or "," oR "," and ", " AND "," aNd "," aND "," AnD "); if ( eregi ( "[a-zA-Z0-9]+", $str ) ) { $str = str_replace ( $banchars, '', ( $str ) ); $str = str_replace ( $banwords, '', ( $str ) ); } else { $str = NULL; } $str = trim($str); $str = strip_tags($str); $str = stripslashes($str); $str = addslashes($str); $str = htmlspecialchars($str); return $str; } ?> Recuerdo que el autor del script decia que primero quitaba los caracteres especiales y despues los AND y OR para evitar cosas como ;OR; en el que solo se borrarian los ; Saludos y gracias. PD: perdonen por revivir un tema con unos meses...
|
|
|
En línea
|
|
|
|
Azielito
no es
Colaborador
Desconectado
Mensajes: 9.188
>.<
|
tal vez no esta pasando la variable "i", podrias modificar la funcion para que, en lugar de un while lo haga por foreach... tambien para "depurar" mandar a imprimir esta variable (I) el problema seria cuando estas en un sistema que se envia informacion en ingles >.<... limpiando las comillas simples, los guines dobles y esas cosas creo que no deberias preocuparte
|
|
|
En línea
|
|
|
|
Alex_bro
Desconectado
Mensajes: 1.246
|
Muchas gracias. Quisiera preguntarles una ultima cosa, si admito solo letras (a-z), numeros (0-9) y los caracteres [] y /, habria algun riesgo de ataque por alguna tecnica? la idea seria aceptar solo texto y bbcode, ya que no necesito ningun otro caracter para campos como noticias, comentarios, usuario... (por cierto, para la ñ como la pongo en expresion regular, como ñ o con algun codigo). Se que // podria ser un fallo de seguridad, cuando digo / es una sola.
Como estoy programando mi web no es propensa a RFI, pero me quedo mas tranquilo con una segunda opinion sobre aceptar la barra / sin nada mas.
Saludos.
|
|
|
En línea
|
|
|
|
Azielito
no es
Colaborador
Desconectado
Mensajes: 9.188
>.<
|
si aceptas solo a-zAZ y 0-9 no tendras ningun problema sobre la seguridad =) o sea, podria haber problemillas si dejas "#",',--,<,>,& [...] y esas cosas pero solo con letras y numeros no hay problema
|
|
|
En línea
|
|
|
|
Alex_bro
Desconectado
Mensajes: 1.246
|
Ya si por las letras y numeros no lo decia, lo decia por la barra / , ya que por los corchetes tampoco creo que hubiera problemas...
Saludos. PD: Como hacen los CMS, foros... para no tener estos problemas? tienen que aceptar todo tipo de caracteres...
|
|
« Última modificación: 4 Septiembre 2007, 01:11 am por Roberto T. »
|
En línea
|
|
|
|
Azielito
no es
Colaborador
Desconectado
Mensajes: 9.188
>.<
|
generalmente los manejadores de contenido tiene problemas si dejan poner html >.<
Tambien (este yo lo implemente) podrias poner un editor RTF para que no te deje entrar codigo asi por el usuario
aun que si interceptas antes el paquete de datos HTTP entonces lo modificas y envias cualquier cosa =\
|
|
|
En línea
|
|
|
|
z0t0
|
Buenas, una pregunta ya que no permites los caracteres como ";" que pasaria si utilizas url encode? .
ej: <script>alert('elhacker.net');</script> por: %3Cscript%3Ealert('elhacker.net')%3B%3C%2Fscript%3E
seria vulnerable a eso?
Un Saludo.
|
|
|
En línea
|
Cansado de que la gente invente, cuente y luego reinvente.
|
|
|
Azielito
no es
Colaborador
Desconectado
Mensajes: 9.188
>.<
|
si, serias vulnerable =)
por eso se recomienda no permitir el "%" ni el "&" ni el "#" asi son menos las posibilidades de tener un bug de XSS
|
|
|
En línea
|
|
|
|
WHK
|
Poqué no subes ese código fuente a un servidor sin seguridad en mod_security ni htaccess? asi probamos online su seguridad.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
aMetro, olvídate de volver a equivocarte de metro
Noticias
|
wolfbcn
|
0
|
1,681
|
17 Marzo 2011, 19:40 pm
por wolfbcn
|
|
|
Limpiar Variables de Formularios con PHP
« 1 2 »
Desarrollo Web
|
FFFenix
|
15
|
11,100
|
18 Agosto 2011, 22:35 pm
por Shell Root
|
|
|
¿Vives en un municipio pequeño? Olvídate de la fibra
Noticias
|
wolfbcn
|
0
|
1,255
|
9 Enero 2015, 18:44 pm
por wolfbcn
|
|
|
¿Billetes AVE a 25 euros? Olvídate, la web de Renfe es un caos
Noticias
|
wolfbcn
|
0
|
2,027
|
25 Abril 2017, 13:54 pm
por wolfbcn
|
|
|
Programación segura
Programación General
|
DamnSystem
|
0
|
2,065
|
5 Noviembre 2017, 23:30 pm
por DamnSystem
|
|