【发布时间】:2015-09-30 08:03:39
【问题描述】:
我在更改登录密码时遇到问题。我使用哈希和盐作为我的密码。我无法在 phpmyadmin 上更改它,因为它是哈希类型的字符。这是我的
create_acc.php
<?php
include_once('config.php');
$email = $_POST['e-mail'];
$pass = $_POST['pass'];
$hash = hash('sha256',$pass);
function createSalt(){
$text = md5(uniqid(rand(), true));
return substr($text,0,3);
}
$salt = createSalt();
$pass = hash('sha256',$salt.$hash);
$email = $mysqli->real_escape_string($email); //$mysqli is located at my config.php
$query = $mysqli->query("INSERT INTO `login`(`email`,`pass`,`salt`) VALUES('$email','$pass','$salt')");
$mysqli->close();
header('location: login.html');
?>
关于如何创建更改密码或忘记密码的任何想法,就像现在在现代登录系统中一样。每当您忘记密码或想更改密码时,服务器会在您的电子邮件中发送一个有关更改加密密码的链接?
【问题讨论】:
-
停止使用自制散列,开始使用PHP内置的password_hash()/password_verify()
-
停止将用户输入直接注入 SQL 语句,并开始使用准备好的语句/绑定变量