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

De WikiEducator
Saltar a: navegación, buscar
Línea 25: Línea 25:
 
|Title=Tutoriales}}
 
|Title=Tutoriales}}
  
 +
== Cifrado de contraseñas ==
 +
<source lang="php">
 +
<?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
 +
));
 +
</source>
 +
 +
=== con salt ===
 +
<source lang="php">
 +
<?php
 +
define("MAX_LENGTH", 6);
 +
 +
function generateHashWithSalt($password) {
 +
    $intermediateSalt = md5(uniqid(rand(), true));
 +
    $salt = substr($intermediateSalt, 0, MAX_LENGTH);
 +
    return hash("sha256", $password . $salt);
 +
}
 +
</source>
 +
 +
=== Uso de Bcrypt ===
 +
<source lang="php">
 +
<?php
 +
function generateHash($password) {
 +
    if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
 +
        $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22);
 +
        return crypt($password, $salt);
 +
    }
 +
}
 +
 +
</source>
 +
 +
=== Autentificar usuarios ===
 +
<source lang="php">
 +
<?php
 +
function verificar($password, $hashedPassword) {
 +
    return crypt($password, $hashedPassword) == $hashedPassword;
 +
}
 +
</source>
  
 
{{Actividad|
 
{{Actividad|

Revisión de 21:44 28 ene 2014



Icon objectives.jpg

Funciones de cifrado

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

Todos

 $hashed_password = crypt('mypassword');





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;
}



Icon activity.jpg

Actividad

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