【问题标题】:Beginners: PHP password hashing [duplicate]初学者:PHP 密码哈希 [重复]
【发布时间】:2015-09-27 04:20:45
【问题描述】:

我是 php 密码哈希的新手,因为我也是 php 编码的初学者。我能够制作一个简单的登录表单,它需要用户名和密码。然后,该密码将通过使用 $_POST['password'] 插入到表中来保存到数据库中。但是我读到这是不安全的,因为它是纯文本,您需要对其进行哈希处理。

我尝试研究 php 中的密码哈希。我发现了几篇文章,但对于像我这样的初学者来说,大部分都不清楚。虽然我有一些基本的想法,但无法思考如何实现它。

我的一些问题: 1. 如何对用户输入的密码进行哈希处理? 2. 一旦它被散列,我如何传递它并将它保存到我的数据库中? 3. 然后密码会在我的数据库中保存为哈希(不是纯文本)吗?如果是这样,我是否需要扩展数据库中的字段长度以容纳长哈希密码?

这些是我的一些疑问,显然来自初学者。 我希望有人能启发我或告诉我从哪里开始。我更喜欢基础知识,以便我能够理解。

非常感谢!

编辑:好的,在提供的链接上找到了一些答案。感谢您将其标记为重复,对此我深表歉意。干杯!!

【问题讨论】:

  • 这个问题太宽泛了。我建议你从这里开始:owasp.org/index.php/Password_Storage_Cheat_Sheet
  • 虽然这篇文章很棒,但还是有点高级
  • @DrewPierce 我同意。然而,密码散列也有点高级。以正确的方式做事很容易,但以错误的方式做事更容易。
  • @EdCottrell 我想更多的是用蜡笔写一篇文章来先把它剪掉:)
  • 老实说:只需使用 $hash = password_hash($_POST['password'], PASSWORD_DEFAULT);password_verify($_POST['password'], $hash);

标签: php html mysql hash passwords


【解决方案1】:

最基本的是 $var = md5($_POST['password']),你可能想使用 sha 但我建议你使用 SALT :) 保存到数据库也是一样的

"INSERT INTO 'tablename' WHERE password = '$var'"

请注意,md5 很容易解密,这只是为了向您展示如何对您的密码进行哈希处理。

【讨论】:

  • 是的,我还读到 md5 更容易解密。有人说他们不推荐 md5。先生应该用什么代替?
  • 我什至不会提到 md5
  • 这都是一个例子,是怎么做错的
  • 它仍然是一个糟糕的哈希,md5 根本不安全,不管是否加盐
  • md5 不适合密码,因为它没有工作因素。解密和盐在这里并不是一个真正的因素。请不要提及它。你本可以提到password_hash,这将是一个很好的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-01
相关资源
最近更新 更多