Manera mas segura de guardar una clave en BD

Iniciado por Hadess_inf, 27 Septiembre 2008, 16:32 PM

0 Miembros y 1 Visitante están viendo este tema.

Hadess_inf

Pues eso mismo, como guardo una clave en la BD. Sera con base64_decode($clave)
es decir:
$clave =base64_encode($_POST['txtpwd']);
$sql="insert into usuario values ('U001','$clave')";
mysql_query($sql);

Es segura esa forma ¿?
Y si no lo es, saber como.. xD

;D ;D ;D

Red Mx

depende que tan seguro


lo haria yo seria sacar el md5  y guardar el md5 cuando ingresen en el login le vuelves a sacar el md5 y si son iguales entonces fue la misma contraseña.


el problema de la encriptacion en base 64 es que la puedes volver a descifrar y que pasa que seria un riesgo hasta cierto punto
Desarrollar Malware Es Causa De Cancer...

WHK

Una forma que yo utilizo es la siguiente:

Código (php) [Seleccionar]
$sql = "
SELECT `estado` FROM `paginas`
WHERE `id`
LIKE CONVERT(_utf8 '".mysql_real_escape_string($_GET[$variable_std])."' USING latin1)
COLLATE latin1_swedish_ci
LIMIT 1;";


Para Ingresar carácteres normales dentro de una query, base64 si es una buena idea, es mas, así lo hice yo en mi sistema filemanager pero lo malo es que después si quieres modificar la base de datos o crear un buscador será muy dificil.

Código (php) [Seleccionar]
$sql = "
SELECT `sección` FROM `paginas`
WHERE `id`
LIKE CONVERT(_utf8 '".(int)$_GET[$variable_num])."' USING latin1)
COLLATE latin1_swedish_ci
LIMIT 1;";


Al preestablecer (int) antepuesto a una variable o constante estás declarando que solo se aceptarán datos numéricos evitando también una inyección sql como por ejemplo index.php?id=-1+union+all+select+1,2,3...
Y cuando hago un Select y necesito una sola columna siempre termino en LIMIT 1 para evitar posibles fugas.

mysql_real_escape_string() Esta función te permite evitar inyecciones sql siempre y cuando el valor esté encerrado dentro de comillas ya que desde acá no podrás escapar con ningún tipo de carácter.
Ahora también es bueno eliminar los slashses que agrega el apache de la siguiente forma:
Código (php) [Seleccionar]
set_magic_quotes_runtime(0);

Eso es lo que se yo sobre seguridad básica cuando programas en php utilizando mysql.

Karman

lo standart es md5, sha1 (el que yo utilizo), crypt...

S2

Meta

«Leo en Kriptópolis un interesante artículo respecto al uso de GPU como la de Nvidia GForce 8 y GForce 9 para romper contraseñas. Los resultados (según ellos) son abrumadores, 1000 millones de contraseñas en un segundo. La empresa responsable del software de recuperación de contraseñas es elcomsoft.»

Fuente 1.

Nuevo sistema, apoyado en tarjetas gráficas, "tritura" contraseñas a velocidades de vértigo

Hace menos de un año, Fernando Acero comentaba en Kriptópolis cómo no tardaríamos en asistir al uso de las GPU de las tarjetas gráficas para acelerar ciertos cálculos colaborando con la CPU.

Hoy mismo, Elcomsoft anuncia una nueva versión de su programa para recuperación de contraseñas de forma distribuida con una peculiaridad interesante: la contribución a la CPU de las GPU de múltiples tarjetas gráficas Nvidia (como la GeForce GTX 280) trabajando en paralelo.

El resultado parece impresionante, ya que el sistema es capaz de explorar hasta 1.000 millones de contraseñas por segundo. Sin llegar a tanto, y sólo para hacernos una idea, mientras un Core2Duo es capaz de probar 200 contraseñas por segundo, la adición al sistema de una simple GeForce GTX260 logra elevar la cifra hasta las 5.000 contraseñas por segundo...

Están soportadas todas las GeForce 8 y GeForce 9, pero ni siquiera es preciso que todas las tarjetas sean idénticas.

Entre las principales víctimas de esta bestia con esteroides, las contraseñas de acceso (LM y NTLM) de Windows (NT, 2000, XP, 2003 y Vista), los "hash" MD5 y las contraseñas de documentos de Office 2007.

Fuente 2.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Karman

me parecen un poco exagerados tus números... pero de todas formas... hace años que dicen que las contraseñas deben ser complejas y de largo tamaño, una contraseña "HOLA" te creo que logren romper...

S2

Ertai

Código (php) [Seleccionar]

for($i=0;$i<69;i++) {
   if($i%2)
     $pass = md5("3324¨Ñ9(=00" . $pass . "()/%asd*'¡");
   else
     $pass = sha1("&/BS((( X(" . $pass . "dfu(//')=(");
}
/* Utiliza las GeForce que quieras ;) */
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}