gpt4 book ai didi

php - 我的 PHP 安全算法是否有效地存储了用户凭证?

转载 作者:可可西里 更新时间:2023-11-01 13:14:01 25 4
gpt4 key购买 nike

这个问题是关于我遇到的一个特定编程问题 - 我想确保我的代码(和软件算法)足以将用户凭据存储在数据库中。

// Get a 32 character salt like '69Mt6nexL1rsjWnu011S53MpB/WmT4Vl'
$passwordSalt = Security::generateBase64Salt();

$user = new User();
$user->setUsername($_POST['username']);

// $_POST['password'] comes in as a 128 character string
// Client side javascript is used to sha512 the string before sending it over POST
// see http://pajhome.org.uk/crypt/md5/
// This prevents novice eavesdroppers from capturing the raw password in plaintext
$user->setPassword(
hash('sha512', $passwordSalt.$_POST['password'])
);
$user->setPasswordSalt($passwordSalt);
$user->save();

这是特定密码的数据库条目:

alt text

密码:

69a78a7586a111b8a567b2d4f42f93f01fb59d337f7fa3c35949a66b246095778c1fa01ff4026abace476091e1e9a183bbdec1c31b12ce3f786921895c98cf6f

盐:

69Mt6nexL1rsjWnu011S53MpB/WmT4Vl

问题:

  • 此算法是否存在任何继承缺陷?
  • 是否可以将盐存储在与盐+密码哈希相同的数据库和表中?
  • 如果表中有几十万个用户,使用 128 个字符的大密码是否会导致登录性能问题(几秒的量级)?
  • 能否将这些数据逆向生成原始密码?

娱乐:

如果你能使用 salt 和 salt + 密码哈希向我提供原始密码,我将支付给你 5 美元。

最佳答案

Kendall 所说的一切,以及..

.. 跳过您在 javascript 中执行客户端的散列。相反,只需购买 SSL 证书并通过 https 发布凭据。将保护您免受新手窃听者和经验丰富的攻击者的侵害。

此外,一旦您在客户端进行哈希处理,它就会有效地成为您的密码。如果窃听者阻止了散列密码,他可以将其传递到您的服务器,一切都会正常进行。

关于php - 我的 PHP 安全算法是否有效地存储了用户凭证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com