Borisigna nos enseña a hacer un webgame

ATENCIÓN: Nos mudamos a http://juegodenavegador.host22.com/index.php


No estás conectado. Conéctate o registrate

ERROR FATAL!!!!

Ir abajo  Mensaje [Página 1 de 1.]

1 ERROR FATAL!!!! el Mar Mar 23, 2010 12:16 am

BORISIGNA


Admin
Hola

Partiré inmediatamente haciendo alusión a un error propio:

"El sistema de login - y en general todo lo que accede a datos confidenciales por medio de usuario -, tienen un error de seguridad fácilmente franqueable"

Basta con poner como usuario ' or a=a # y se puede acceder a todos los datos sin siquiera ingresar una contraseña.

En pocas palabras.... horrible.

Me veré en la obligación de reestructurar todo el blog, aunque no es necesario que ustedes pierdan su avance, sino que agreguen alguna forma de encriptar los datos que envía el usuario especialmente al momento del Login.

http://juegodenavegador.wordpress.com

2 Re: ERROR FATAL!!!! el Mar Mar 23, 2010 9:37 pm

Rvega_91


Admin
De los errores todos aprendemos ^^.
Cualquier cosa que necesites ayuda, por aquí estoy, pero mis conocimientos sobre todo eso son nulos Razz.

Suerte!

3 Re: ERROR FATAL!!!! el Miér Mar 24, 2010 7:09 pm

BORISIGNA


Admin
Jejeje, claro que de los errores se aprende y eso lo sé muy bien Smile

De todas formas, con la codificación md5 no tendremos problemas con posibles ataques mysql a nuestros códigos para sabotearlos.

http://juegodenavegador.wordpress.com

4 error fatal el Sáb Mar 27, 2010 7:16 pm

M4RC3L0

avatar
pues la verdad aunq te equivoques( al fin y al cabo todos somos humanos) tus scripts me estan ayudando mucho en esto
gracias compadre

5 Re: ERROR FATAL!!!! el Lun Abr 19, 2010 1:47 pm

spanisher


Hola, en principio bastaría con añadir esta línea antes de hacer la consulta a la BBDD (en este caso debajo de require('seguridad.php'); que está al principio de todo).

$usuario = str_replace ("'", "", $_POST['usuario']);

Y para la contraseña no estaría mal hacer lo mismo (más vale prevenir que curar)

$contrasena = str_replace ("'", "", $_POST['contrasena']);

Con esa línea lo que hacemos es evitar que alguien pueda ingresar comillas simples al insertar el usuario, Eso evita lo que se llama Inyección de SQL Smile

Espero que sirva, aún así pienso que esa parte del index se puede optimizar un poco más.

Saludos!

6 Re: ERROR FATAL!!!! el Lun Abr 19, 2010 2:40 pm

spanisher


Hola, pues me he estado peleando un poco con el código jeje... y tomando la idea de Borisigna al final el mío lo he dejado así (Solo pongo la parte de PHP porque el HTML es igual):

index.php
<?php
require('seguridad.php');
if (!empty($_POST['usuario']) || !empty($_POST['contrasena'])){
echo (!isset($_POST['usuario']));
if (empty($_POST['usuario'] )){
echo "<center><h3>Falta el nombre de usuario</h3></center>";
}else if (empty($_POST['contrasena'])){
echo "<center><h3>Falta la contraseña</h3></center>";
}else {
$usuario = str_replace ("'", "", $_POST['usuario']);
$contrasena = str_replace ("'", "", $_POST['contrasena']);
$contrasena = encriptacion($contrasena);
//conectamos con la BD
conectar_base_datos();
$query = "SELECT * FROM usuarios WHERE contrasena = '$contrasena' and usuario = '$usuario'";
$consulta = mysql_query($query );
if(mysql_num_rows($consulta) == 0){
echo "<center><h3>Usuario no registrado</h3></center>";
}else{
session_start();
$_SESSION['usuario'] = $usuario;
header("Location: main.php");
}
}
}
?>

7 Re: ERROR FATAL!!!! el Lun Abr 19, 2010 2:52 pm

spanisher


Aix!, mejor explico lo que he hecho Wink

Al entrar a index.php comprobamos si hemos llenado "usuario" o "contraseña", como nada más entrar en la página no hay ninguno de los dos campos lleno, no se ejecuta nada más del código php y pasamos directamente al formulario.


Después al rellenar alguno de los campos y pulsar ingresar, entonces si entraremos en la parte php donde se mirará si hay algún campo vacío (usuario o contraseña) para dar el correspondiente mensaje de aviso.

Si uno de los dos campos está vacío, lógicamente no hará falta que haga ninguna comprobación en la BBDD, así que volverá de nuevo al formulario.

Lo demás ya se sabe, si hemos escrito "usuario" y "contraseña" y al hacer la consulta los datos están en la BBDD vamos a "main.php", sino, volvemos al formulario con el aviso de que el usuario no está registrado.

Ah!, por cierto, con:
$usuario = str_replace ("'", "", $_POST['usuario']);
$contrasena = str_replace ("'", "", $_POST['contrasena']);

Lo que hacemos es utilizar la función de php "str_replace()", que lo que hace es buscar en un "string" el carácter que le digamos y substituirlo por otro que elijamos.

En nuestro caso, le hemos dicho que si encuentra alguna comilla simple, la cambie por un espacio en blanco. Así las malas personas no nos pueden inyectar SQL Laughing

Es todo Smile

Contenido patrocinado


Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.