【问题标题】:How do I hash a password that goes into a database? [duplicate]如何散列进入数据库的密码? [复制]
【发布时间】:2019-09-13 00:05:27
【问题描述】:
$useremail = mysqli_real_escape_string($link, $_REQUEST['useremail']);
$password = mysqli_real_escape_string($link, $_REQUEST['password']);
$confirm_password = mysqli_real_escape_string($link, $_REQUEST['confirm_password']);
$f_name = mysqli_real_escape_string($link, $_REQUEST['f_name']);
$l_name = mysqli_real_escape_string($link, $_REQUEST['l_name']);
$grade_level = mysqli_real_escape_string($link, $_REQUEST['grade_level']);

// Attempt insert query execution
$sql = "INSERT INTO Users (useremail, password, f_name, l_name, grade_level) VALUES ('$useremail', '$password', '$f_name', '$l_name', '$grade_level')";

if ($_POST["password"] === $_POST["confirm_password"])......

我已尝试更改代码以包含 HASH_PASSWORD,但我认为我做得不对。

【问题讨论】:

标签: php mysql hash insert passwords


【解决方案1】:

首先:除了准备好的语句,请尝试使用PDO。它更新且更安全。 对于散列字符串,您可以使用以下代码:

$hashpassword = password_hash($yourpassword, PASSWORD_DEAULT);

用于检查输入是否与您可以使用的哈希相同:

password_verify($yourinput, $dbpassword);

这会返回一个布尔值:所以truefalse

【讨论】:

  • PDO 并不安全(也不安全)。准备好的语句更安全,您可以将它们与 mysqli 一起使用。
【解决方案2】:

请使用 PHP 的内置函数 password_hash() 和 password_verify() 来处理密码安全。如果您使用的 PHP 版本低于 5.5,您可以使用 password_hash() 兼容包。确保在散列之前不要转义密码或对其使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。

(取自Password Hashing PHP 7

我还可以建议使用 PDO“准备您的陈述”

编辑:进一步阅读后,我同意红鲱鱼......我撤回我的建议

【讨论】:

  • 为什么不直接使用 mysqli 准备他的陈述?
猜你喜欢
  • 1970-01-01
  • 2018-03-12
  • 2019-05-24
  • 1970-01-01
  • 2013-01-08
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 2012-09-20
相关资源
最近更新 更多