首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sha256时SQL表中的实际密码可视化

问使用sha256时SQL表中的实际密码可视化
EN

Stack Overflow用户
提问于 2012-07-16 20:35:22
回答 3查看 625关注 0票数 1

我正在训练以确保登录过程的安全。

我在sign_up.php中使用过sha 256:

代码语言:javascript
复制
$username= check_input($_POST['username']);
$password= check_input($_POST['password']);
//the password is encrypted in sha256
$secure_sign_up_password = hash('sha256', $password);

当然,在SQL数据库中的users表中,我可以读到:

  • 在“登录”栏中,实际输入的登录示例:如果有人键入'michael',我将在SQL数据库中看到'Michael‘
  • 在“密码”列中--实际输入的登录示例:如果有人键入‘水果’,我将在SQL数据库中看到类似于'e8bfab56c53980cd014206c8da2f8c9b9708eaacc61‘的散列值。

我的问题很简单,但可能有点天真(我是个新手):我认为我仍然能够在我的数据库中的某个地方读取实际的密码,而哈希只是为了保护密码在发送时不会被截获和读取。我不知道,可能有人会让我把他的真实密码给他。但我唯一能看到的是密码列中的“散列”。

  • 是这样做的吗?
  • 是否也可以可视化真实的密码?
EN

回答 3

Stack Overflow用户

发布于 2012-07-16 20:39:35

如果你能够“解码”这些密码,那就不是一个非常安全的系统了。一旦有人访问了你的数据库,他们就可以在不知情的情况下访问每个人的密码.

如果你忘记了一个网站的密码(我们都忘记了--不要否认!),你会记得他们通常*不只是给你发密码(以纯文本形式)来提醒你的电子邮件--他们会给你机会重新设置密码()。这样(通常通过你的电子邮件/电话号码核实),他们就会知道你确实是开户的人。

*如果他们将你的密码以纯文本形式发送给你,这可能意味着他们这样存储密码,或者以其他容易解密的形式存储密码。这个网站很可能不像他们想的那样安全.

如果您有兴趣为自己留下一个“后门”来访问您的任何用户帐户,您可能会考虑从您的管理员帐户中设置一个特殊的登录表单,允许您使用编码密码登录。这意味着您只需省略hash('sha256', $password)并传递已经编码的$password (从数据库中提取)。这有点麻烦,如果您已经有了一个管理员帐户,那么作为一个不同的用户登录就没有多大用处了,因为您已经是都强大了!!

票数 4
EN

Stack Overflow用户

发布于 2012-07-16 20:38:28

这是故意的。没有人应该知道我的密码是什么,除了我。即使你(在这里插入花哨的标题)也不应该知道我的密码。如果我忘了,那是我的问题,但你的网站应该提供给我一个方法来重置它。然后,当我重置时,您的站点应该再次存储哈希。纯文本密码不应存储在任何地方。

票数 3
EN

Stack Overflow用户

发布于 2012-07-16 22:40:45

sha256散列和其他散列是一种方式。见function。如果希望能够解密数据库中密码字段中写入的内容,则可能需要使用另一种方法。

您可以使用不与用户共享的密钥进行加密,而不是创建哈希。看看http://www.php.net/manual/en/book.mcrypt.php。但是,密钥将是代码的一部分,因为它是对称加密。

要做到真正的安全,请尝试真正的PKI加密(用公钥加密,用私有密钥解密)。请查看php.net/手动/en/function.gnupg.manual crypt.php或php.net/手册/en/book.openssl.php。

但正如这里的其他人所说,这些事情是合理地不做的;)

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

https://stackoverflow.com/questions/11512114

复制
相关文章

相似问题

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