3

我在我的 php 应用程序中随处使用bcrypt 进行密码散列。但是,仍然可以选择在数据库中使用bcrypt 或在 php 代码中使用 bcrypt 。虽然我相信使用 bcrypt 比大多数其他散列选项更好,但通过数据库中的函数还是通过 php 中的函数使用 bcrypt 是否更安全?

4

2 回答 2

2

我会选择第二个选项并计算 PHP 代码中的 BCrypt 哈希。

如果您将密码放在 SQL 语句中,它还有其他可能泄漏的可能性。首先必须确保与数据库的连接安全,然后它可能会出现在日志文件中。

如果您将哈希放在 SQL 语句中,您只需要关心安全传输到您的应用程序,其余的将是安全的,因为只有哈希可以泄漏。作为奖励,您不必关心 SQL 注入和编码/转义问题。另一个优点是,你是独立于数据库系统的,你也可以支持没有 BCrypt 实现的数据库(大多数数据库不提供 BCrypt 功能,或者仅通过安装扩展)。

于 2013-09-10T19:44:52.400 回答
1

我个人认为这可能是两种方式:

如果您说原始密码可以在进入数据库的途中被嗅探,那么哈希值也是如此。唯一添加的安全性是Security through obscurity。他们不知道您使用的是什么哈希算法,当他们发现时,哈希可能会随着时间的推移而被破解。

问题是人们可以从 PHP 嗅探数据到数据库,而不是发送原始密码。如果您在数据库中使用 SSL,则应该没有问题。(除非您的数据库记录已发送的查询,否则如果您的数据库记录查询,那么您应该使用 PHP 散列)

数据库散列的一个好处是它更快。

于 2013-09-09T21:52:47.180 回答