elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Es este código seguro?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Es este código seguro?  (Leído 7,407 veces)
NewLog


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Es este código seguro?
« en: 22 Enero 2008, 23:25 pm »

He hecho el mismo post en el subforo de bugs y exploits, si ven que aquí sobra lo pueden borrar. (Aunque quizá lo borren ahí... Aishh).


Bueno, he intentado programar un sistema de logueo para acceder a una página en particular, pero con que lo he hecho yo desde cero con los pocos conocimientos que tengo, me pregunto si este sistema es totalmente seguro, dejando a parte SQL Injections (ya que aun no he mirado eso). El código es el siguiente:

Formulario.php
Código:
<html>
<head></head>
<body bgcolor="#000" text="#FFFFFF">
<center><br><br><br>
<form action="acceso.php" method="post">
Login:<br><input name="login" type="text" maxlength="9"></input><br><br>
Password: <br><input name="pass" type="password" maxlength="9"></input><br><br>
<input type="submit" value="Enviar">
</form>
</center>
</body>
</html>

Este no hace falta ni que lo explique porqué creo que es muy simple.

Acceso.php
Código:
<?php
$login= htmlentities($_POST['login']);
$pass= htmlentities($_POST['pass']);
$db="Usuarios";
$tabla="Datos";
echo "Datos:";
echo "<br>";
echo "El login es $login<br>";
echo "El password es $pass<br>";

$conexion=mysql_connect("localhost","root","");
if(!$conexion){
echo "No se ha podido conectar a la base de datos<br>";
return 0;
}else{
mysql_select_db($db, $conexion);

$res=mysql_query("SELECT * FROM $tabla", $conexion);
echo "Res=$res<br>";
while($fila = mysql_fetch_array($res)){
$login1 = $fila['login'];
$password1 = $fila['pass'];
echo "Login leido= $login1   Password leido=$password1";
}
}
mysql_close();
if(($login==$login1)&&($pass==$password1)){
header("location:AccesoValidado.html");
}else{
header("location:AccesoDenegado.html");
}
?>

No es muy difícil de entender, si tenéis alguna duda preguntad. Al final de este código es donde se comprueba si el password y usuario es el mismo. Yo creo que es seguro ya que el valor de una variables en php NO se pueden modificar externamente, no? Y si se intenta entrar a Acceso.php este redirecciona directamente hacia AccesoDenegado.html.

Lo que aun no sé es como hacer que a Accesovalidado sólo puedan llegar las personas loguedas. Me pregunto si es posible hacerlo sin cookies.


Gracias.


En línea

SirLanceCC


Desconectado Desconectado

Mensajes: 1.093


Ver Perfil WWW
Re: Es este código seguro?
« Respuesta #1 en: 23 Enero 2008, 16:16 pm »

No entiendo esto
Código
  1. $res=mysql_query("SELECT * FROM $tabla", $conexion);
  2.  
  3. while($fila = mysql_fetch_array($res)){
  4. $login1 = $fila['login'];
  5. $password1 = $fila['pass'];
  6. echo "Login leido= $login1   Password leido=$password1";
  7. }
  8. }
  9. if(($login==$login1)&&($pass==$password1)){
  10. header("location:AccesoValidado.html");
  11. }

por que $login1 sólo tendrá el ultimo dato leido... quizá no te ha provocado error si tienes un solo usuario en tu tabla...

Y la consulta yo la haría así para :
Código
  1. SELECT usuario, password FROM $tabla WHERE login='$login' AND pass='$pass'
Si existe el usuario con la conraseña correcta te devolverá sus datos, si no no te devolverá nada...

Y además para asegurar un poco más deberías de cifrar las contraseñas con md5() por ejemplo. Es decir en tu base de datos tienes la contraseña cifrada y luego, la contraseña que recibes la encriptas también y luego la comparas con la que está almacenada.
 ;)


« Última modificación: 23 Enero 2008, 16:21 pm por -| Sir_Lance |- » En línea

NewLog


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: Es este código seguro?
« Respuesta #2 en: 23 Enero 2008, 18:15 pm »

Sí, sí, en la base de datos sólo tengo un usuario, así que el algoritmo de búsqueda no es importante. Aun así, me apunto tu manera de hacer la consulta (aun no sé MySQL).

Lo que dices de cifrar la contraseña, me pregunto si es posible encriptarla directamente en la página formulario.php y cuando se envie YA esté cifrada. Además no con una función predeterminada por php sinó con una creada por mi mismo.
Sin que la contraseña se envie en texto plano en ningún momento!


Además, ahora se me ha ocurrido una pregunta, sabéis que google tiene un buscador de código? Pues en él se pueden leer códigos en php que en teoria son de webs reales. Es posible que aunque el código se interprete en el servidor alguien pueda obtener el código php de la web?

Gracias -| Sir_Lance |-
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Es este código seguro?
« Respuesta #3 en: 23 Enero 2008, 20:55 pm »

por el foro tienes logins exos
En línea

NewLog


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: Es este código seguro?
« Respuesta #4 en: 23 Enero 2008, 21:49 pm »

Pero no me va la comida rápida ^^ Aun así les echaré un vistazo.
En línea

baZZ

Desconectado Desconectado

Mensajes: 168



Ver Perfil
Re: Es este código seguro?
« Respuesta #5 en: 24 Enero 2008, 04:09 am »

No utilices caracteres comodín. En vez de SELECT *, haz SELECT de los campos que necesites. Se considera un buen hábito...

Un saludo
En línea

- EVGA ATX - Intel X58
- i7 920 @ 3,2 Ghz
- 2x260 gtx 216 SLI
- 3x1 GB OCZ DIMM DDR3 1600 Mhz
- Tacens Sagitta II
- Seagate 7200.12
Falta:
- T.R.U.E ^^
- i7 @ 4,0 Ghz
Carxl

Desconectado Desconectado

Mensajes: 29

Intentando ser webmaster!!!


Ver Perfil
Re: Es este código seguro?
« Respuesta #6 en: 24 Enero 2008, 05:34 am »

Hola a todos, cómo van??

Si me permiten...

NewLog, lo que te dice Sir_Lance es cierto, esa es la manera correcta de peguntar si es un usuario válido, así sea un solo usuario ;D

Además a manera de consejo te recomiendo que el conectar y seleccionar una DB sea una función o una clase, y la llames la veces que la necesites.

Y lo que dice baZZ, mas que un hábito, se haría por ahorrar recursos del server :)

Saludos
En línea

Hay 10 tipos de personas, los que entienden binario... y los que no!
NewLog


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: Es este código seguro?
« Respuesta #7 en: 24 Enero 2008, 08:27 am »

Gracias por los consejos sobre MySql.

Alguien sabe lo de google? Y aun más, es posible leer (por un usuario) el valor de las variables en php que yo no muestro?

Gracias!
En línea

SirLanceCC


Desconectado Desconectado

Mensajes: 1.093


Ver Perfil WWW
Re: Es este código seguro?
« Respuesta #8 en: 24 Enero 2008, 15:50 pm »

Citar
Es posible que aunque el código se interprete en el servidor alguien pueda obtener el código php de la web?
Pues que yo sepa solo si el autor lo publica o si encuentras alguna vilnerabilidad en el sistema o en el servidor. Yo creo que en el caso de google han de ser los autores quienes publican los codigos.

Citar
Lo que dices de cifrar la contraseña, me pregunto si es posible encriptarla directamente en la página formulario.php y cuando se envie YA esté cifrada. Sin que la contraseña se envie en texto plano en ningún momento!
Bueno eso... creo que solo con https, aunque la verdad no lo se... en un formulario normal en http creo que la contraseña si viaja en texto plano

Citar
Además no con una función predeterminada por php sinó con una creada por mi mismo.
Yo creo que no hay que reinventar la rueda a menos que tu plan sea reinventar la rueda. Para hacer una función de cifrado que sea medianamente buena son necesarios meses de trabajo (supongo). Además md5 es un buen algoritmo.

Citar
Lo que aun no sé es como hacer que a Accesovalidado sólo puedan llegar las personas loguedas. Me pregunto si es posible hacerlo sin cookies.
Se pueden usar las sesiones de php.
« Última modificación: 24 Enero 2008, 15:53 pm por -| Sir_Lance |- » En línea

NewLog


Desconectado Desconectado

Mensajes: 329



Ver Perfil WWW
Re: Es este código seguro?
« Respuesta #9 en: 24 Enero 2008, 16:56 pm »

Cita de: -| Sir_Lance |-
Yo creo que no hay que reinventar la rueda a menos que tu plan sea reinventar la rueda. Para hacer una función de cifrado que sea medianamente buena son necesarios meses de trabajo (supongo). Además md5 es un buen algoritmo.

No es que quiera reinventar la rueda. Simplemente es que si alguna vez alguien consigue "snifar" la contraseña no la podrá asociar a ningún algoritmo conocido del cual exista un programa para romperlo (como en el caso de md5 (que no es romperlo, pero se puede llegar a saber la contraseña)) y es muy posible que se quede o_O. Y no nos engañemos, no todos los que saben usar un sniffer tiene idea de lo que es un algoritmo. Así que aunque el algoritmo no sea complicado, seguro que es mucho más útil.

Al menos eso pienso yo ^^.
« Última modificación: 24 Enero 2008, 23:31 pm por NewLog » En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Qué tan seguro es este login que he planteado en un sitio web en ASP.Net?
Desarrollo Web
TwisteD420 4 4,666 Último mensaje 4 Abril 2012, 02:42 am
por TwisteD420
Este upload es seguro?
PHP
RicRed 4 4,754 Último mensaje 20 Noviembre 2012, 20:47 pm
por gowend
Hola, este método es seguro?
Dudas Generales
Terminator5 4 1,946 Último mensaje 8 Marzo 2023, 16:38 pm
por Falo Zipo Pixote
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines