Foros del Web » Programando para Internet » PHP »

que les parece este modo de encriptacion

Estas en el tema de que les parece este modo de encriptacion en el foro de PHP en Foros del Web. <?php session_start(); // If user is logged in, header them away if(isset($_SESSION["username"])){ header("location: message.php?msg=NO to that weenis"); exit(); } ?> <?php // Ajax calls this ...
  #1 (permalink)  
Antiguo 14/03/2014, 07:19
Avatar de JoseAlberth  
Fecha de Ingreso: marzo-2014
Mensajes: 23
Antigüedad: 10 años, 1 mes
Puntos: 0
De acuerdo que les parece este modo de encriptacion

<?php
session_start();
// If user is logged in, header them away
if(isset($_SESSION["username"])){
header("location: message.php?msg=NO to that weenis");
exit();
} ?>
<?php
// Ajax calls this NAME CHECK code to execute
if(isset($_POST["usernamecheck"])){
include_once("php_includes/db_conx.php");
$username = preg_replace('#[^a-z0-9]#i', '', $_POST['usernamecheck']);
$sql = "SELECT id FROM users WHERE username='$username' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$uname_check = mysqli_num_rows($query);
if (strlen($username) < 3 || strlen($username) > 16) {
echo '<strong style="color:#F00;">3 - 16 characters please</strong>';
exit();
}
if (is_numeric($username[0])) {
echo '<strong style="color:#F00;">Usernames must begin with a letter</strong>';
exit();
}
if ($uname_check < 1) {
echo '<strong style="color:#009900;">' . $username . ' is OK</strong>';
exit();
} else {
echo '<strong style="color:#F00;">' . $username . ' is taken</strong>';
exit();
}
}
?><?php
// Ajax calls this REGISTRATION code to execute
if(isset($_POST["u"])){
// CONNECT TO THE DATABASE
include_once("php_includes/db_conx.php");
// GATHER THE POSTED DATA INTO LOCAL VARIABLES
$u = preg_replace('#[^a-z0-9]#i', '', $_POST['u']);
$e = mysqli_real_escape_string($db_conx, $_POST['e']);
$p = $_POST['p'];
$g = preg_replace('#[^a-z]#', '', $_POST['g']);
$c = preg_replace('#[^a-z ]#i', '', $_POST['c']);
// GET USER IP ADDRESS
$ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR'));
// DUPLICATE DATA CHECKS FOR USERNAME AND EMAIL
$sql = "SELECT id FROM users WHERE username='$u' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$u_check = mysqli_num_rows($query);
// -------------------------------------------
$sql = "SELECT id FROM users WHERE email='$e' LIMIT 1";
$query = mysqli_query($db_conx, $sql);
$e_check = mysqli_num_rows($query);
// FORM DATA ERROR HANDLING
if($u == "" || $e == "" || $p == "" || $g == "" || $c == ""){
echo "El envío del formulario no encuentra valor.";
exit();
} else if ($u_check > 0){
echo "El nombre de usuario introducido ya está en uso";
exit();
} else if ($e_check > 0){
echo "Esa dirección de correo electrónico ya está en uso en el sistema";
exit();
} else if (strlen($u) < 3 || strlen($u) > 16) {
echo "Nombre de usuario debe tener entre 3 y 16 caracteres";
exit();
} else if (is_numeric($u[0])) {
echo 'Nombre de usuario no puede empezar con un número';
exit();
} else {
// END FORM DATA ERROR HANDLING
// Begin Insertion of data into the database
// Hash the password and apply your own mysterious unique salt
$cryptpass = crypt($p);
include_once ("php_includes/randStrGen.php");
$p_hash = randStrGen(20)."$cryptpass".randStrGen(20);
// Add user info into the database table for the main site table
$sql = "INSERT INTO users (username, email, password, gender, country, ip, signup, lastlogin, notescheck)
VALUES('$u','$e','$p_hash','$g','$c','$ip',now(),n ow(),now())";
$query = mysqli_query($db_conx, $sql);
$uid = mysqli_insert_id($db_conx);
// Establish their row in the useroptions table
$sql = "INSERT INTO useroptions (id, username, background) VALUES ('$uid','$u','original')";
$query = mysqli_query($db_conx, $sql);
// Create directory(folder) to hold each user's files(pics, MP3s, etc.)
if (!file_exists("user/$u")) {
mkdir("user/$u", 0755);
}
// Email the user their activation link
$to = "$e";
$from = "[email protected]";
$subject = 'yoursitename Account Activation';
$message = 'Registro completado';

$headers = "From: $from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
mail($to, $subject, $message, $headers);
echo "Registro completado";
exit();
}
exit();
}
?>
  #2 (permalink)  
Antiguo 14/03/2014, 07:32
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: que les parece este modo de encriptacion

Dificil de leer....

Ponlo más facil, quita el codigo que no tiene nada que ver con lo que quieres que veamos, utiliza el Highlight, fijate en mi firma .... etc
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 14/03/2014 a las 07:39
  #3 (permalink)  
Antiguo 14/03/2014, 10:56
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: que les parece este modo de encriptacion

Hola:

Solo me voy a centrar en esta parte:
Código PHP:
Ver original
  1. // Begin Insertion of data into the database
  2. // Hash the password and apply your own mysterious unique salt
  3. $cryptpass = crypt($p);
  4. include_once ("php_includes/randStrGen.php");
  5. $p_hash = randStrGen(20)."$cryptpass".randStrGen(20);
  6. // Add user info into the database table for the main site table
  7. $sql = "INSERT INTO users (username, email, password, gender, country, ip, signup, lastlogin, notescheck)
  8. VALUES('$u','$e','$p_hash','$g','$c','$ip',now(),n ow(),now())";

Voy a suponer q la función
crypt ( p )
haya el hash de p

y q la función
randStrGen( N )
devuelve una cadena aleatoria (salt) de tamaño N.

Para saber q tan seguras son estas funciones es necesario ver su implementación.
Pero la forma en q las estás usando es incorrecta.
El salt se le aplica al password ANTES de hashearlo.
El salt SE GUARDA en la base de datos junto con el password ya hasheado.
Para realizar la autenticación haces el mismo proceso con el password q te envía el usuario:
aplicas el mismo salt (el q esta en la bse de datos para ese usuario)
aplicas crypt
comparas el resultado con el password hasheado q esta en la base de datos
si son iguales: Autenticado

slds;

nup_
  #4 (permalink)  
Antiguo 14/03/2014, 14:03
Avatar de JoseAlberth  
Fecha de Ingreso: marzo-2014
Mensajes: 23
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: que les parece este modo de encriptacion

Gracias a todos lo que pasa esque tengo un problema al loguearme no me deja ingresar y no porque aca esta el codigo

Código PHP:
Ver original
  1. <?php
  2. include_once("php_includes/check_login_status.php");
  3. // If user is already logged in, header that weenis away
  4. if($user_ok == true){
  5.     header("location: user.php?u=".$_SESSION["username"]);
  6.     exit();
  7. }
  8. ?><?php
  9. // AJAX CALLS THIS LOGIN CODE TO EXECUTE
  10. if(isset($_POST["e"])){
  11.     // CONNECT TO THE DATABASE
  12.     include_once("php_includes/db_conx.php");
  13.     // GATHER THE POSTED DATA INTO LOCAL VARIABLES AND SANITIZE
  14.     $e = mysqli_real_escape_string($db_conx, $_POST['e']);
  15.     $p = md5($_POST['p']);
  16.     // GET USER IP ADDRESS
  17.     $ip = preg_replace('#[^0-9.]#', '', getenv('REMOTE_ADDR'));
  18.     // FORM DATA ERROR HANDLING
  19.     if($e == "" || $p == ""){
  20.         echo "login_failed";
  21.         exit();
  22.     } else {
  23.     // END FORM DATA ERROR HANDLING
  24.         $sql = "SELECT id, username, password FROM users WHERE email='$e' AND activated='1' LIMIT 1";
  25.         $query = mysqli_query($db_conx, $sql);
  26.         $row = mysqli_fetch_row($query);
  27.         $db_id = $row[0];
  28.         $db_username = $row[1];
  29.         $db_pass_str = $row[2];
  30.         if($p != $db_pass_str){
  31.             echo "login_failed";
  32.             exit();
  33.         } else {
  34.             // CREATE THEIR SESSIONS AND COOKIES
  35.             $_SESSION['userid'] = $db_id;
  36.             $_SESSION['username'] = $db_username;
  37.             $_SESSION['password'] = $db_pass_str;
  38.             setcookie("id", $db_id, strtotime( '+30 days' ), "/", "", "", TRUE);
  39.             setcookie("user", $db_username, strtotime( '+30 days' ), "/", "", "", TRUE);
  40.             setcookie("pass", $db_pass_str, strtotime( '+30 days' ), "/", "", "", TRUE);
  41.             // UPDATE THEIR "IP" AND "LASTLOGIN" FIELDS
  42.             $sql = "UPDATE users SET ip='$ip', lastlogin=now() WHERE username='$db_username' LIMIT 1";
  43.             $query = mysqli_query($db_conx, $sql);
  44.             echo $db_username;
  45.             exit();
  46.         }
  47.     }
  48.     exit();
  49. }
  50. ?>


Código PHP:
Ver original
  1. aca esta el otro
  2.  
  3. <?php
  4. include_once("db_conx.php");
  5. // Files that inculde this file at the very top would NOT require
  6. // connection to database or session_start(), be careful.
  7. // Initialize some vars
  8. $user_ok = false;
  9. $log_id = "";
  10. $log_username = "";
  11. $log_password = "";
  12. // User Verify function
  13. function evalLoggedUser($conx,$id,$u,$p){
  14.     $sql = "SELECT ip FROM users WHERE id='$id' AND username='$u' AND password='$p' AND activated='1' LIMIT 1";
  15.     $query = mysqli_query($conx, $sql);
  16.     $numrows = mysqli_num_rows($query);
  17.     if($numrows > 0){
  18.         return true;
  19.     }
  20. }
  21. if(isset($_SESSION["userid"]) && isset($_SESSION["username"]) && isset($_SESSION["password"])) {
  22.     $log_id = preg_replace('#[^0-9]#', '', $_SESSION['userid']);
  23.     $log_username = preg_replace('#[^a-z0-9]#i', '', $_SESSION['username']);
  24.     $log_password = preg_replace('#[^a-z0-9]#i', '', $_SESSION['password']);
  25.     // Verify the user
  26.     $user_ok = evalLoggedUser($db_conx,$log_id,$log_username,$log_password);
  27. } else if(isset($_COOKIE["id"]) && isset($_COOKIE["user"]) && isset($_COOKIE["pass"])){
  28.     $_SESSION['userid'] = preg_replace('#[^0-9]#', '', $_COOKIE['id']);
  29.     $_SESSION['username'] = preg_replace('#[^a-z0-9]#i', '', $_COOKIE['user']);
  30.     $_SESSION['password'] = preg_replace('#[^a-z0-9]#i', '', $_COOKIE['pass']);
  31.     $log_id = $_SESSION['userid'];
  32.     $log_username = $_SESSION['username'];
  33.     $log_password = $_SESSION['password'];
  34.     // Verify the user
  35.     $user_ok = evalLoggedUser($db_conx,$log_id,$log_username,$log_password);
  36.     if($user_ok == true){
  37.         // Update their lastlogin datetime field
  38.         $sql = "UPDATE users SET lastlogin=now() WHERE id='$log_id' LIMIT 1";
  39.         $query = mysqli_query($db_conx, $sql);
  40.     }
  41. }
  42. ?>
Espero de que me puedan ayudar con esto

Etiquetas: encriptacion, formulario, html, modo, mysql, registro, select, sql, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:21.