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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Sistema de ingreso de usuario en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 4 5 6 7 [8] 9 Ir Abajo Respuesta Imprimir
Autor Tema: Sistema de ingreso de usuario en PHP  (Leído 23,483 veces)
securedigital


Desconectado Desconectado

Mensajes: 532


Do you enjoy with IBM OS/400 ¿


Ver Perfil WWW
Re: Sistema de ingreso de usuario en PHP
« Respuesta #70 en: 16 Mayo 2007, 18:41 pm »

Hola a todos.

Yo tengo por aaqui un post que colge mi codigo, que teoricamente no es tan facil de vulnerar, contraseñas cifradas en md5, se usan sessions.

Es un logins de usuario y contraseña, usado para acceder a ciertas partes o donde quieras, compuesto de 3 scripts.

1-conexion BBDD
2-Login
3-Code para proteger frente indeseados

Solo es que me esta dando problemas...xd estoy ahora cargandomelo un poco y arreglando problemillas. Ahora mismo ya no da errores SQL ni nada, pero tanto si el user como pass con correctos o no, entra de todas formas....

Enga a ver si alguien me hecha una mano que mi php no da para mas....


Saludos


En línea

The man who whispered to the computers
Der Mann, der zu den Computern flüsterte

                                                 FAD58DE7366495DB4650CFEFAC2FCD61

                                    
Luisango


Desconectado Desconectado

Mensajes: 313



Ver Perfil WWW
Re: Sistema de ingreso de usuario en PHP
« Respuesta #71 en: 16 Mayo 2007, 20:24 pm »

ahora lo revisare a ver que tal, pero lo de las contraseñas en md5 base64 etc... son añadiduras que les puedes hacer o no, pero lo que importa es la base de todo eso, si no hay base, no hay nada  :P

S2!


En línea

Even better...
jamarchi

Desconectado Desconectado

Mensajes: 151


the best foro !!!


Ver Perfil
Re: Sistema de ingreso de usuario en PHP
« Respuesta #72 en: 31 Mayo 2007, 23:04 pm »


Hola Gente.....  :D, como les va?
Despues de algun tiempo de no poder volver a este tema, aqui estoy..... he modificado el codigo un poco para ver si ahora si hace lo que tiene que hacer ..... aqui lo pongo y por favor... si hay algo malo se aceptan sugerencias para arreglarlo, gracias de antemano....

validar.php
Código:
<?php
include ("includes/config.php");
include ("includes/funciones.php");
//nos conectamos a mysql
$cnx = conectar ();
if($_POST["entrar"]){
     if($_POST["username"] && $_POST["pass"]){
$contraseña = md5("$_POST[pass]");
$query = mysql_query("SELECT * FROM usuarios WHERE nick='".$_POST['username']."'",$cnx);
$datos = mysql_fetch_array($query);
if($datos['pass'] == $pass){ // si las pass son =// crea la cookie del usuario con la id el nick y la pass
setcookie("id",$datos['id'],time()+90000);
                setcookie("nick",$datos['nick'],time()+90000);
setcookie("pass",$pass,time()+90000);
header("Location: resumen.php"); //redireccionas donde quieras login correcto
                }
}
}
else
header("Location: index.php");//pa la pag de error
?>

Resumen.php
Código:
<?php
//código inseguro xD
if($_COOKIE['id'])
{echo "<h1>&nbsp;</h1>";
 echo "<h1>YES !!</h1>";
// Aqui va el codigo que quieras proteger
} else
{echo "Solo los usuarios registrados pueden acceder a esta sección";
}//Fin
echo"<p>&nbsp;</p>";
echo"<a href='logout.php'>Salir</a>"
?>

Logout.php
Código:
<?php
setcookie("user","0");
setcookie("id","0");

echo "<center><br>Sesión Finalizada<br>Que tenga un buen día ";

echo "<META HTTP-EQUIV=\"refresh\" content=\"1;URL=index.php\">";
?>

Espero que este mejor este codigo..... gracias  :)
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Sistema de ingreso de usuario en PHP
« Respuesta #73 en: 31 Mayo 2007, 23:34 pm »

no compruebas los intentos de lameradas... yo diría que es exactamente el code hace meses xD

Tiene hasta el comentario que le puse de código inseguro xD

Código:
<?php
//código inseguro xD
if($_COOKIE['id'])
{echo "<h1>&nbsp;</h1>";
 echo "<h1>YES !!</h1>";
// Aqui va el codigo que quieras proteger
} else
{echo "Solo los usuarios registrados pueden acceder a esta sección";
}//Fin
echo"<p>&nbsp;</p>";
echo"<a href='logout.php'>Salir</a>"
?>


tienes que comprobar que el username no contenga lameradas...xD
ahi lo lanzas sin más contra la base de datos y por lo tanto es vulnerable a SQLInyection xD

Código:
<?php if($_POST["username"] && $_POST["pass"]){
        //eso no se si funciona... me da que cifra la cadena xD
//$contraseña = md5("$_POST[pass]");
        //así seguro que funciona xD  (de todos modos es inseguro)
        $contraseña = md5($_POST["pass"]);
$query = mysql_query("SELECT * FROM usuarios WHERE nick='".$_POST['username']."'",$cnx);
En línea

jamarchi

Desconectado Desconectado

Mensajes: 151


the best foro !!!


Ver Perfil
Re: Sistema de ingreso de usuario en PHP
« Respuesta #74 en: 31 Mayo 2007, 23:58 pm »


Hola Hans, gracias por tu respuestas

Oye... aque te refieres con "lameradas"

Agregando esto 
Código:
 if($_POST["username"] && $_POST["pass"]){
lo have mas seguno ?

Como lo mejoro ...... :-[
En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Sistema de ingreso de usuario en PHP
« Respuesta #75 en: 1 Junio 2007, 12:03 pm »

Lammeradas = intentos de "hack" por pseudoshackers

Para poner más seguridad hay de muchas formas:

1.- Revisa los referers.
2.- Quita las cookies y crea sesiones, es más seguro.
3.- Limpia las variables $_POST, $_GET, $_COOKIE, etc; addslashes(), htmlspecialchars(), mysql_escape_string().
4.- Revisa las cabeceras de los navegadores.
5.- Crea un mini-sistema de intentos fallidos, si 123.56.89.36 ha intentado autentificarse más de 5 veces dale ban desde un htaccess.
6.- Guarda logs de autentificaciones existosas como fallidas.

Etc.

EDIT

Hay muchas cosas que puedes hacer  ;)

Saludos
« Última modificación: 1 Junio 2007, 12:05 pm por Ing_Amc » En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Sistema de ingreso de usuario en PHP
« Respuesta #76 en: 4 Junio 2007, 00:47 am »

Te adjunto el autentificator hecho por cluster de forosdelweb. Ya viene parchado contra la inyección sql descubierta por sidarkcat.

Hoy en la noche le voy hacer unas modificaciones al tuyo  ;)

Saludos
En línea

Novalis

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Sistema de ingreso de usuario en PHP
« Respuesta #77 en: 16 Junio 2007, 18:04 pm »


Oye Jamarchi..... porque no usas Session.... creo que son un poco mas seguras que las cookies.... y segun se.... hasta mas faciles de usar....  ::)
En línea

jamarchi

Desconectado Desconectado

Mensajes: 151


the best foro !!!


Ver Perfil
Re: Sistema de ingreso de usuario en PHP
« Respuesta #78 en: 19 Junio 2007, 23:30 pm »


Oye Navalis....

Gracias por el consejo.... voy a investigar sobre eso....

Pregunta.... las sesiones son mas seguras que las cookies ?

Saludos pueblo  ;D
En línea

jamarchi

Desconectado Desconectado

Mensajes: 151


the best foro !!!


Ver Perfil
Re: Sistema de ingreso de usuario en PHP
« Respuesta #79 en: 22 Junio 2007, 16:11 pm »


Hola gente.... como les va ?  :D

Pues yo aqui de nuevo.....

Bueno.... despues de un buen rato de INVESTIGAR y BUSCAR tengo el siguiente codigo.... no es con cookies si no con session, aqui se los pongo....


Index.php
Código:
<table width=350 border=1 bgcolor=#3399FF>
<?php

//Se inicia la session
session_start();

$username = $_SESSION['username'];
$password = $_SESSION['password'];

//Chequea si hay username y password
if(!$username && !$password){
echo "Bienvenido Visitante! <br> <a href=login.php>Login</a> | <a href=register.php>Register</a>";
}else{
echo "Bienvenido ".$username." (<a href=logout.php>Salir</a>)";
echo "Aqui va la parte protegida ? ";
//echo "<table width=350 border=1 bgcolor=#3399FF>\n";
echo " <tr>\n";
echo "    <td>Esta parte es protegida ?</td>\n";
echo "  </tr>\n";
//echo "</table>\n";
}
?>
</table>

Login.php
Código:
<?php
session_start();

//Formulario para entrar
function index(){

echo "<form action='?act=login' method='post'>"
    ."Username: <input type='text' name='username' size='30'><br>"
    ."Password: <input type='password' name='password' size='30'><br>"
    ."<input type='submit' value='Login'>"
    ."</form>";   

}

// Esta funcion chequea si la informacion es correcta
function login(){

//Toma la informacion del formulario
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];


//conecta la base de datos
$connect = mysql_connect("localhost", "root", "");
if(!$connect){
die(mysql_error());
}

//Selecciona la base
$select_db = mysql_select_db("base_nombre");
if(!$select_db){
die(mysql_error());
}

//chequea si la informacion es correcta

$result = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password'");
$row = mysql_fetch_array($result);
$id = $row['id'];

$select_user = mysql_query("SELECT * FROM users WHERE id='$id'");
$row2 = mysql_fetch_array($select_user);
$user = $row2['username'];

if($username != $user){
die("Username incorrecto!");
}


$pass_check = mysql_query("SELECT * FROM users WHERE username='$username' AND id='$id'");
$row3 = mysql_fetch_array($pass_check);
$email = $row3['email'];
$select_pass = mysql_query("SELECT * FROM users WHERE username='$username' AND id='$id' AND email='$email'");
$row4 = mysql_fetch_array($select_pass);
$real_password = $row4['password'];

if($password != $real_password){
die("Password incorrecto!");
}



//Si todo es correcto crea las sesione y permite engresar

session_register("username", $username);
session_register("password", $password);

echo "Bienvenido, ".$username." Para continuar de click aqui en el <a href=index.php>Index</a>";




}

switch($act){

default;
index();
break;

case "login";
login();
break;

}
?>

Logout.php
Código:
<?php
session_start();

//Aqui se destruye la session
session_destroy();
echo "Usted no esta logueado!, seleccione <a href=index.php>Index</a> o <a href=login.php>Ingresar</a>";

?>

Registrar.php
Código:
<?php

//Muestra el formulario de registro
function register_form(){

$date = date('D, M, Y');
echo "<form action='?act=register' method='post'>"
    ."Username: <input type='text' name='username' size='30'><br>"
    ."Password: <input type='password' name='password' size='30'><br>"
    ."Confirmar password: <input type='password' name='password_conf' size='30'><br>"
    ."Email: <input type='text' name='email' size='30'><br>"
    ."<input type='hidden' name='date' value='$date'>"
    ."<input type='submit' value='Register'>"
    ."</form>";

}

//Registra la informacion del usuario
function register(){

//Connecta la database
$connect = mysql_connect("localhost", "root", "");
if(!$connect){
die(mysql_error());
}

//Selectciona la database
$select_db = mysql_select_db("data_name");
if(!$select_db){
die(mysql_error());
}

//Informacion
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$pass_conf = $_REQUEST['password_conf'];
$email = $_REQUEST['email'];
$date = $_REQUEST['date'];

//Apartir de aqui se empieza a chequear la informacion

if(empty($username)){
die("Favor digitar su username!<br>");
}

if(empty($password)){
die("Favor digitar su password!<br>");
}

if(empty($pass_conf)){
die("Favor confirmar su password!<br>");
}

if(empty($email)){
die("Favor digitar su email!");
}

//Chequeamos que el username no este en uso

$user_check = mysql_query("SELECT username FROM users WHERE username='$username'");
$do_user_check = mysql_num_rows($user_check);

//Ahora chequeamos si el email no este en uso

$email_check = mysql_query("SELECT email FROM users WHERE email='$email'");
$do_email_check = mysql_num_rows($email_check);

//Mostramos errores

if($do_user_check > 0){
die("Ese Username ya esta registrado!<br>");
}

if($do_email_check > 0){
die("Ese email ya esta registrado!");
}

//chequeamos que los passwords sean iguales

if($password != $pass_conf){
die("Los password digitados son diferentes!");
}


//Si todo esta bien, se agrega el usuario

$insert = mysql_query("INSERT INTO users (username, password, email) VALUES ('$username', '$password', '$email')");
if(!$insert){
die("Hay un problema: ".mysql_error());
}

echo $username.", ha sido registrado. muchas gracias!<br><a href=?act=login>Ingresar</a> | <a href=index.php>Index</a>";

}

switch($act){

default;
register_form();
break;

case "register";
register();
break;

}

?>

ahi se los pongo.... segun las pruebas que le he hecho esta bastante bien... pero talvez omite algo...

Muchas gracias  ;D
En línea

Páginas: 1 2 3 4 5 6 7 [8] 9 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sistema de autenticación con NodeJS / Validación de usuario
Desarrollo Web
Ali Baba 3 2,348 Último mensaje 21 Octubre 2016, 23:51 pm
por Ali Baba
Error al registrar un usuario en el sistema
PHP
Antoniio 3 2,332 Último mensaje 24 Febrero 2018, 03:06 am
por engel lex
Problemas de ingreso
PHP
jacarvy 5 3,769 Último mensaje 22 Mayo 2021, 01:26 am
por jacarvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines