首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用电子邮件地址更改Hash(加密密码)的更好方法

使用电子邮件地址更改Hash(加密密码)的更好方法
EN

Stack Overflow用户
提问于 2015-07-12 01:38:49
回答 2查看 809关注 0票数 0

我在更改登录密码时遇到了麻烦。我使用哈希和盐作为我的密码。我不能在phpmyadmin上更改它,因为它是散列类型的字符。这是我的

create_acc.php

代码语言:javascript
复制
<?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');
?>

任何关于如何创建更改密码或忘记密码的想法,就像现在的现代登录系统一样。当您忘记密码或想要更改密码时,服务器会在您的电子邮件中发送一个关于更改加密密码的链接?

EN

回答 2

Stack Overflow用户

发布于 2015-07-12 01:45:14

不,使用phpmyadmin你只需要做一些简单的加密,比如md5和sha1。但是你可以用一种微妙的方式做到这一点。加密您的密码从任何在线服务或通过php,然后将您的加密密码在您的phpmyadmin。就是这样:)

票数 0
EN

Stack Overflow用户

发布于 2015-07-12 01:59:36

您可以使用相同的逻辑来实际重置密码/分配新密码。您可以通过最简单的方式创建一个密码重置表单和一些URL (端点),这些URL(端点)可以接受(POST)由电子邮件或用户名组成的请求作为输入/数据。一旦收到,您通常会向用户的电子邮件发送一封电子邮件,其中包含允许用户重置密码的URL。此部分应创建一个唯一的令牌,并应存储在您选择的数据库中。发送给用户的电子邮件通常包含令牌作为URL的一部分,理想情况下应该在用户访问时立即删除令牌,但删除/保留令牌的里程数和选择可能因应用程序和用户而异。一旦用户访问了为重置密码而发送的URL,您将对令牌执行查找,如果令牌存在,则查找想要重置密码的用户,然后只允许用户输入密码(& confirm password)。一旦用户点击Submit,您只需通过创建新用户时使用的相同密码散列函数来传递新密码。

哦,你可以用你的代码做得更好。看起来像是几年前的事了。它可以更安全,写得更好。我建议查看php手册中的密码散列和准备好的语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31359963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档