Título: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: tecasoft en 17 Noviembre 2012, 18:04 pm
mysql_real_escape_string sea a actualizado no¿¿? xk ahora cifra los datos que pasa pero no los puedo guardar en la base de datos que hago, aqui os paso el codigo con el mysql_real_escape_string comentado sino no me funciona y no loguea el usuario "SERGIO": <?php session_start();
if(!isset($_SESSION['usuario1'])) { $usuario=$_POST['usuario']; $pass=$_POST['contrasena'];
/* cifra el mysql_real_escape_string los datos, asi que habrá que de algun modo de cifrar los datos pero que estos sean devueltos en la base de datos*/ /*$usuario=mysql_real_escape_string($usuario);*/ $pass=mysql_real_escape_string($pass);
$cifrad=hash('sha512','$pass');
} else { $usuario=$_SESSION['usuario1']; $cifrad=$_SESSION['contrasena']; }
include("conexionbd.php");
$conexion=mysql_connect($host,$usu,$pusu);
mysql_select_db($bd,$conexion);
$correcto=0; $result=mysql_query("select cod_admin,usuario1,contrasena from REC_administradores where usuario1='$usuario' and contrasena='$cifrad'",$conexion);
if($fila1=mysql_fetch_array($result)) { $fila1['cod_admin']; $_SESSION['usuario1']=$fila1['usuario1']; $_SESSION['contrasena']=$fila1['contrasena']; $correcto=1;
}
if($correcto==1) { echo "Has entrado: ". $fila1['cod_admin']; }
if($correcto==0) { echo "No entras"; unset($_SESSION['usuario1']); unset($_SESSION['contrasena']);
}
mysql_close($conexion); ?>
-- -- TABLA Administradores --
CREATE TABLE REC_administradores( cod_admin INTEGER NOT NULL AUTO_INCREMENT, usuario1 VARCHAR(200) NOT NULL, contrasena VARCHAR(200) NOT NULL, adminemail VARCHAR(200) NOT NULL, usuario VARCHAR(20), CONSTRAINT PKUSUA PRIMARY KEY (cod_admin), CONSTRAINT adminunica1 UNIQUE(usuario1), CONSTRAINT adminunica11 UNIQUE(usuario) ) ENGINE=InnoDB;
NECESITO contra sql injection y cifrar la base de datos con algun algoritmo recursivo*.
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: tecasoft en 17 Noviembre 2012, 19:40 pm
E RECTIFICADO Y X CIERTO MYSQL_REAL_ESCAPE_STRING esta totalmente descartado da errores: <?php session_start();
if(!isset($_SESSION['usuario1'])) { $usuario=$_POST['usuario']; $pass=$_POST['contrasena'];
/*$dato=12345; if (strlen($dato)<1 || strlen($dato)>15) { echo " El limite del dato es de 15 caracteres<br>"; return false; } echo $dato;*/ /* cifra el mysql_real_escape_string los datos, asi que habrá que de algun modo de cifrar los datos pero que estos sean devueltos en la base de datos*/ /*$usuario=mysql_real_escape_string($usuario);*/ /*$pass=mysql_real_escape_string($pass);*/
$cifrad=hash('sha512',$pass); echo $cifrad; } else { $usuario=$_SESSION['usuario1']; $cifrad=$_SESSION['contrasena']; }
include("conexionbd.php");
$conexion=mysql_connect($host,$usu,$pusu);
mysql_select_db($bd,$conexion);
$correcto=0; $result=mysql_query("select cod_admin,usuario1,contrasena from REC_administradores where usuario1='$usuario' and contrasena='$cifrad'",$conexion);
if($fila1=mysql_fetch_array($result)) { $fila1['cod_admin']; $_SESSION['usuario1']=$fila1['usuario1']; $_SESSION['contrasena']=$fila1['contrasena']; $correcto=1;
}
if($correcto==1) { echo "Has entrado: ". $fila1['cod_admin']; }
if($correcto==0) { echo "No entras"; unset($_SESSION['usuario1']); unset($_SESSION['contrasena']);
}
mysql_close($conexion); ?>
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: tecasoft en 17 Noviembre 2012, 20:15 pm
estoy haciendo mi codigo pero nose si ando bien, comenten algo sobre la lista blanca xk parece que eso es lo que me falla ahora solo. ademas necesito algun array o algo para no repetir codigo como lo podria hacer tambien en lo de longitud de caracateres, gracias haber si sale algun experto en arrays o algo de esto,porque sino tendria x cada campo que repetir codigo y eso es mucho codigo: <?php session_start();
if(!isset($_SESSION['usuario1'])) { $usuario=$_POST['usuario']; $pass=$_POST['contrasena'];
if (strlen($usuario)<8 || strlen($usuario)>15) { echo " El limite esta entre 8 y 15 caracteres<br>"; return false; }
//es mejor hacer una lista blanca con caracteres permitidos que una negra, lo que no este aquí simplemente se ignora $validos = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789-_ @#"; for ($i=0; $i<strlen($usuario); $i++){ if (strpos($validos, substr($usuario,$i,1))===false){ echo " Contiene caracteres no permitidos<br>"; return false ; } } return true;
/* cifra el mysql_real_escape_string los datos, asi que habrá que de algun modo de cifrar los datos pero que estos sean devueltos en la base de datos*/ /*$usuario=mysql_real_escape_string($usuario);*/ /*$pass=mysql_real_escape_string($pass);*/
/*$cifrad=hash('sha512',$pass);*/
} else { $usuario=$_SESSION['usuario1']; $cifrad=$_SESSION['contrasena']; }
include("conexionbd.php");
$conexion=mysql_connect($host,$usu,$pusu);
mysql_select_db($bd,$conexion);
$correcto=0; $result=mysql_query("select cod_admin,usuario1,contrasena from REC_administradores where usuario1='$usuario' and contrasena='$cifrad'",$conexion);
if($fila1=mysql_fetch_array($result)) { $fila1['cod_admin']; $_SESSION['usuario1']=$fila1['usuario1']; $_SESSION['contrasena']=$fila1['contrasena']; $correcto=1;
}
if($correcto==1) { echo "Has entrado: ". $fila1['cod_admin']; }
if($correcto==0) { echo "No entras"; unset($_SESSION['usuario1']); unset($_SESSION['contrasena']);
}
mysql_close($conexion); ?>
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: WarGhost en 18 Noviembre 2012, 11:44 am
No doble postees por favor, existe un botón que es el de editar mensaje ;).
Lo primero que te puedo decir así viéndolo por encima es que no uses la extensión mysql, usa la extensión mysqli.
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: tecasoft en 18 Noviembre 2012, 17:46 pm
xk mysqli?¿ y si tengo un proyecto echo en mysql que pasaria¿?
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: WarGhost en 18 Noviembre 2012, 20:40 pm
Nada, simplemente te ira más lento, estas usando estándares desaconsejados... y quien sabe que si en una futura actualización de PHP eliminen esa extensión y te toque reescribir el código entero xD.
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: tecasoft en 18 Noviembre 2012, 20:56 pm
es decir que tendria que cambiar de mysql todas mysql_connect,mysql_select_db, etc dices¿¿¿?
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: WarGhost en 18 Noviembre 2012, 21:05 pm
Sip,
http://www.php.net/manual/es/mysqlinfo.api.choosing.php
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: tecasoft en 18 Noviembre 2012, 21:33 pm
tu con cual trabajas¿? y los archivos php.ini etc, actuan bien¿?
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: Graphixx en 19 Noviembre 2012, 17:11 pm
es decir que tendria que cambiar de mysql todas mysql_connect,mysql_select_db, etc dices¿¿¿?
yo quede con la misma duda. :silbar:
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: WarGhost en 19 Noviembre 2012, 18:12 pm
Sip, hay que cambiar todo por la extorsiona mysqli o PDO.
Respecto a la que yo uso.... depende del proyecto, si solo utilizo mysql como BD uso mysqli, pero en cambio.. si necesito crear un sistema híbrido con varios motores de BDs PDO.
Título: Re: como puedo cifrar mi base de datos y a la vez tener seguridad sql
Publicado por: tecasoft en 20 Noviembre 2012, 22:06 pm
puedes poner algun ejemplo de login.php para ver las funciones como las utilizas porque yo utilizaba el mysql_fetch_array y hay metia un valor $correcto=1 para que me entrara si fuera $correcto=1 sino entraba con $correcto=0, como se haria con mysqli en este ejemplo: <?php session_start();
if(!isset($_SESSION['usuario1'])) { $usuario=$_POST['usuario']; $pass=$_POST['contrasena'];
if (strlen($usuario)<8 || strlen($usuario)>15) { echo "El limite esta entre 8 y 15 caracteres<br>"; return false; }
//es mejor hacer una lista blanca con caracteres permitidos que una negra, lo que no este aquí simplemente se ignora $validos = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789-_@#"; for ($i=0; $i<strlen($usuario); $i++){ if (strpos($validos, substr($usuario,$i,1))===false){ echo " Contiene caracteres no permitidos<br>"; return false ; } }
$cifrad=hash('sha512',$pass);
} else { $usuario=$_SESSION['usuario1']; $cifrad=$_SESSION['contrasena']; }
include("conexionbd.php");
$conexion=mysql_connect($host,$usu,$pusu);
mysql_select_db($bd,$conexion);
$correcto=0; $result=mysql_query("select cod_admin,usuario1,contrasena from REC_administradores where usuario1='$usuario' and contrasena='$cifrad'",$conexion);
if($fila1=mysql_fetch_array($result)) { $fila1['cod_admin']; $_SESSION['usuario1']=$fila1['usuario1']; $_SESSION['contrasena']=$fila1['contrasena']; $correcto=1;
}
if($correcto==1) { echo "Has entrado: ". $fila1['cod_admin']; }
if($correcto==0) { echo "No entras"; unset($_SESSION['usuario1']); unset($_SESSION['contrasena']);
}
mysql_close($conexion); ?>
|