Diferencia entre revisiones de «Usuario:Lmorillas/desarrollo web servidor/php/passwords»

De WikiEducator
Saltar a: navegación, buscar
Línea 42: Línea 42:
 
|TOCdepth=2
 
|TOCdepth=2
 
|Title=Tutoriales}}
 
|Title=Tutoriales}}
 +
 +
== Problema mcrypt en ubuntu ==
 +
  sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
 +
  sudo php5enmod mcrypt
 +
  sudo service apache2 restart
  
 
== Otros ejemplos de cifrado de contraseñas ==
 
== Otros ejemplos de cifrado de contraseñas ==

Revisión de 10:29 5 feb 2014


Funciones de cifrado

Icon objectives.jpg

Funciones de cifrado

PHP >= 5.5
  $hashed_password = password_hash("mipassword", PASSWORD_DEFAULT)
  boolean password_verify ( string $password , string $hash )

Todos

  // 2a es el selector del algoritmo bcrypt algoritmo (ver http://php.net/crypt)
  // 12 es el factor de carga de trabajo (unos 300ms en un Core i7), ver http://php.net/crypt
  $salt = bin2hex(openssl_random_pseudo_bytes(22));
  $passwd = filter_var($_POST['password'), FILTER_SANITIZE_STRING);
  $hash = crypt($passwd, "$2a$12$".$salt);
  // Guarda el hash, no hace falta guardar el salt
 
  if (crypt($passwd, $hash) == $hash) {
      // Verificado
  }


Cifrado con pbkdf2


Tutoriales


Problema mcrypt en ubuntu

 sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
 sudo php5enmod mcrypt
 sudo service apache2 restart

Otros ejemplos de cifrado de contraseñas

<?php
$username = $_POST["username"];
$password = $_POST["password"];
 
// conexión a la base de datos
// ...
 
// limpieza de los inputs
// ...
 
// crear hash de la password
$password = hash("sha256", $password);
 
 
// guardar valores en la base de datos
$sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
 
$stmt = $db->prepare($sql);
 
$stmt->execute(array(
    ":username" => $username,
    ":password" => $password
));

con salt

<?php
define("MAX_LENGTH", 6);
 
function generateHashWithSalt($password) {
    $intermediateSalt = md5(uniqid(rand(), true));
    $salt = substr($intermediateSalt, 0, MAX_LENGTH);
    return hash("sha256", $password . $salt);
}

Uso de Bcrypt

<?php
function generateHash($password) {
    if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
        $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
        return crypt($password, $salt);
    }
}

Autentificar usuarios

<?php
function verificar($password, $hashedPassword) {
    return crypt($password, $hashedPassword) == $hashedPassword;
}


Práctica de registro de usuarios



Práctica. Adaptación de un registro de usuarios

Icon activity.jpg

Práctica. Adaptación de un registro de usuarios

Echa un vistazo a http://www.php-login.net/

  1. Crea una app de prueba que use el login-advanced (https://github.com/panique/php-login-advanced) Tutorial: http://www.dev-metal.com/install-php-login-nets-2-advanced-login-script-ubuntu/
  2. Adapta el sistema de login de https://github.com/panique/php-login-minimal a tu agenda con PDO y sqlite