关于 this question about passwords management 的第一个被接受的答案建议对数据库中的用户标识符进行加密。
好处是,如果有人获得密码,他必须知道如何解密用户登录以获得完整的登录名/密码对。
我看到的一些缺点,例如:
- 每次要显示用户登录信息时都必须解密
- 如果您想对用户登录进行“开头为”搜索以查找用户,您不能简单地使用
LIKE '...%'
ORDER BY
在登录字段上也可能相当困难......
您会推荐什么(是否加密用户标识符)?
最佳答案
和往常一样,答案是“视情况而定”。
一般来说,如果攻击者可以访问您的数据库,您的安全状况就会受到严重威胁,加密密码可能对您没有好处。这与使用单向哈希不同 - 有权访问您的数据库的攻击者很可能也可以访问您的解密 key ,而根据定义,单向哈希是一种方式。
正如您已经说过的,您可能需要定期访问用户 ID(尤其是如果您使用电子邮件地址作为用户 ID);在这种情况下,可以读取您的数据库的攻击者可能会拦截未加密的数据。
因此,如果您在银行、政府或任何其他必须将数据安全放在首位的地方工作,这种额外的保护可能是值得的,特别是如果您有强大的 key 管理系统。
对于其他用途,我认为额外的安全性太小,不值得额外的痛苦。
关于database - 加密存储在数据库中的用户名是否有益?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8139680/