从 php 表单保存密码。这哪个更安全?

发布于 2025-01-08 01:18:01 字数 506 浏览 0 评论 0原文

$pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
        $insert = mysql_query("INSERT INTO users(username, password) VALUES( '".$username."', '".md5($pass)."')");

或者

$salt = "zfgse5tfgHk2jdf4hGiuyeV9trejkewQ5kjujPhysftf7agfd";
$pass = crypt($password, "$1$".$salt);
$insert = mysql_query("INSERT INTO users (username, password) VALUES ('".$username."', '".$pass."')");

我正在保存 php 注册表中的表单数据。上述哪些代码是安全的?还有比这些更好的吗?

$pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
        $insert = mysql_query("INSERT INTO users(username, password) VALUES( '".$username."', '".md5($pass)."')");

or

$salt = "zfgse5tfgHk2jdf4hGiuyeV9trejkewQ5kjujPhysftf7agfd";
$pass = crypt($password, "$1$".$salt);
$insert = mysql_query("INSERT INTO users (username, password) VALUES ('".$username."', '".$pass."')");

I am saving form data from a php registration form. Which of the above codes is secure? Anything better than these?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

网名女生简单气质 2025-01-15 01:18:01

方法#1将彻底破坏一切,你将永远无法再次登录。非常安全(除非你没有转义 $username ,在这种情况下它完全没有价值),但可能不是你的意图。

方法#2 可行;但这看起来有点愚蠢、复杂,但做一些本应简单的事情。

这是我通常使用的:

public static function Hash($value) {
    return hash('sha512', hash('sha512', $value) . Config::HashSalt);
}

其中 Config::HashSalt 是你的长的、更随机的盐字符串。这需要在课堂上进行。以下是结构示例: https://github.com/minitech/ReTicket/ blob/master/config.php

Method #1 will totally break everything, you'll never be able to log in again. Pretty secure (unless you're not escaping $username, in which case it's totally worthless), but probably not your intention.

Method #2 will work; but it looks like a little bit of a silly, complicated way of doing something that should be straightforward.

Here's what I usually use:

public static function Hash($value) {
    return hash('sha512', hash('sha512', $value) . Config::HashSalt);
}

where Config::HashSalt is your long, much more random salt string. This needs to be in a class. Here's an example of the structure: https://github.com/minitech/ReTicket/blob/master/config.php

成熟稳重的好男人 2025-01-15 01:18:01

第二个选项(第一个是完全错误的),但略有改变:

  1. 使用sha512(从不使用md5)
  2. 对每个用户使用不同的用户盐,但存储在数据库中
  3. 使用服务器盐,最好使用一些不在键盘上的特殊字符
  4. 使用参数将变量插入查询(php.net/manual/en/book.pdo.php)

Second option(first is totally wrong), but slightly changed:

  1. Use sha512(Never use md5)
  2. Use user salt different for every user, but which is stored in db
  3. Use server salt, best with some special chars that are not on keyboard
  4. Use parameters to insert variables into query(php.net/manual/en/book.pdo.php)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文