我目前正在为我们的客户开发一个带有 PHP 框架的平台。
客户的 IT 部门负责人希望我们使用包含电子邮件+密码+salt(散列)的一个数据库字段来处理身份验证,因此该表中没有纯文本电子邮件字段,并且密码更安全(他的推理)。用户应该能够使用他的电子邮件地址和密码登录。因此,电子邮件地址用作用户名。这背后的想法是,用户的电子邮件地址对我们客户的业务非常重要,IT 负责人希望隐藏登录表中的电子邮件地址,以防可能受到攻击。(例如,黑客可以访问登录表)
这当然是唯一可能的,因为用于登录的散列电子邮件地址链接到他在个人资料表中的电子邮件地址。基本上,此过程需要两个表才能工作。这些表当然在同一个数据库中。一个带有哈希组合字段(电子邮件、密码、盐)的登录表和一个配置文件表,其中包含一个字段中的明文电子邮件。我们称之为 profile_email。
我强烈建议不要使用此解决方案,因为我以前从未听说过此解决方案,并且我已经确定了此解决方案的一些可能问题。
所以我的问题是:这是一个安全可行的解决方案吗?你能想到任何不可预见的问题吗?你听说过类似的解决方案吗?