(In)seguridad en los foros [SMF]

Iniciado por ‭lipman, 14 Julio 2010, 10:23 AM

0 Miembros y 2 Visitantes están viendo este tema.

jdc

Lipman bastante simpático, pero creo que sería mejor que no hicieras un tutorial xD por último omite el código para que sí algún pelotudo sigue tu idea por lo menos tenga que pensar algo.

Ahora, algún tiempo he administrado foros y creo firmemente que la confianza es lo principal y este tipo de cosas hace que se pierda. Mucha gente en sus sistemas guardan la contraseña sin cifrar y sí smf la cifra por defecto, no deberías enseñar como no hacerlo.

Ojo te lo digo con harto respeto.

Saludos

~ Yoya ~


CitarPor ejemplo, si me registro, y pongo de usuario lipman y de contraseña password, en la base de datos se guarda la cifrado de lipmanpassword, de la siguiente simple manera:


Código (php) [Seleccionar]
sha1($nombreUsuario . $password)

Por lo que, cuando un administrador acceda a la base de datos, le será imposible obtener la contraseña de ese usuario.

Y que pasa si otro usuario accede a la DB, quisieras que tenga todas las contraseñas, asi de facir?



Citar
Se podrían hacer cientos de métodos distintos e incluso combinarlos, para averiguar las contraseñas de los usuarios que se registren. El más sencillo que se me ocurre es: justo al registrarse un usuario, guardar en la base de datos su contraseña sin cifrar
No funcionara ya que lo que hace es comparar el dato con el que esta en la DB...
Osea, se ingresa el password a la DB sin cifrar y cuando el usuario digita su password se pasa a md5 y se verifica si los dos datos son iguales, si tienes tu password registrado en la DB sin cifrar, al comprobarlo no seran lo mismo, salvo que no use ningun tipo de encriptacion xD...
Ej:
Código (php) [Seleccionar]
<?php
$valordelusuario 
md5(123456);
$valor_sin_sifrar_de_la_db 123456;
if(
$valordelusuario == $valor_sin_sifrar_de_la_db){
echo 
"Password Correcto";
exit;
}
echo 
"Password Incorrecto";
exit;

?>


Siempre los password serán incorrecto...
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

jdc

Claro, la idea sería agregar un nuevo campo a la db y guardar en ese la clave, asi se tendría en la db el usuario, el pass cifrado y el pass sin cifrar, pero como dijeron por ahí esto se puede hacer en cualquier cms abierto en el cual el usuario tenga acceso a la db y a los archivos fuente del sistema.

Insisto en que es mejor no facilitar el trabajo a gente sin ética, lo mejor es que sí quieren hacer pelotudeses que se quiebren el coco

madpitbull_99

Cita de: ‭lipman en 14 Julio 2010, 11:37 AM
Tal vez porque lo he escrito yo?

Da igual , no lo has entendido...



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

‭lipman

@Yoya
El código funciona perfectamente, he hecho muchísimas pruebas y es indiscutible su funcionamiento xD

Fíjate, que hago 2 cosas:
-La primera, creo en la base de datos una fila nueva (para meter ahí la contraseña sin cifrar)
-La segunda, hago que se guarde (junto con la contraseña cifrada) la contraseña sin cifrar.

Si no hiciera esto, tendría que cambiar el método que usa SMF para loguearse también, y esto es más complicado (pero se podría hacer)

@Janito
Tienes toda la razón, me hiciste recapacitar un poco, y he decidido quitar los códigos el lunes que viene (para que así vean aunque sea el trabajo que hice durante unos dias) y lo mismo haré cuando postee los siguientes  :D

Un saludo y gracias!

Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

@madpitbull_99
Es fácil de entender, al ser el autor del post, lo pongo de primeras en mi página y luego aquí. Por otro lado, está el tema de la "responsabilidad" y prefiero que caiga la responsabilidad de este post en mi, que en este foro. No te lo digo con mala intención ^^

Saludos!

madpitbull_99

La fuente se suele poner cuando un post no es tuyo y asi citar la fuente, pero ya que lo has publicado tu se da a entender que lo has escrito tu ...



«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

~ Yoya ~


Fíjate, que hago 2 cosas:
-La primera, creo en la base de datos una fila nueva (para meter ahí la contraseña sin cifrar)
-La segunda, hago que se guarde (junto con la contraseña cifrada) la contraseña sin cifrar.

Si no hiciera esto, tendría que cambiar el método que usa SMF para loguearse también, y esto es más complicado (pero se podría hacer)

Si exacto, tendrias que cambiar el metodo que usa SMF para loguearse pero por algo las contraseñas se guardan cifradas en la DB, porque pueda ser que alguien copie la DB y luego la este vendiendo xD...

Eso es solo una medida de seguridad, no hay nada malo en eso....
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

kisk

Citar$contrasenha = $_POST['passwrd1'];
$miembrouser = $_POST['user'];

$consulta = "UPDATE smf_members SET pwdlol = '$contrasenha' WHERE memberName = '$miembrouser'";
$resultado = mysql_query($consulta) or die("Error realizando la consulta");


Eso se ve como una bonita inyeccion sql :D xD
La vieja escuela me da nostalgia la nueva me da naucias dime cual es la escuela si ambas me deprimen (8)

jdc

Que se guardará en un campo y jamás se mostrará xD

braulio--

Cita de: jdc en 15 Julio 2010, 17:41 PM
Que se guardará en un campo y jamás se mostrará xD
Si con eso quieres decir que no es explotable estás equivocado.
Si $contrasenha contiene "blablabla' , password=md5('hola') WHERE memberName='admin' --" le puedes reventar.