作为PHP网站上的安全功能,我正在创建我计划在低流量网站的表中记录密码尝试。 (正确的密码被加盐并以不可逆加密方式存储。)
这是暂时和永久性的,在某些情况下会根据用户和IP在一个时间范围内的尝试次数及其位置来阻止用户和IP。
我计划以纯文本或可逆(不对称)加密方式存储错误的用户名和密码。
用户名中包含拼写错误的用户可能会存储正确的密码,因此......
这是一个糟糕的主意吗?如果是这样,为什么以及你会推荐什么?可逆加密?
我倾向于存储不正确的尝试,因为我有兴趣看看不正确的密码机器人用来暴力破解,所以我可以阻止它们的使用。
(我目前阻止用户使用着名的adobe hack中的100个最常见的密码以及其他一些密码。)
答案 0 :(得分:3)
我说这很糟糕,因为你说的原因,但也因为许多用户可能会使用他们总是使用的几个密码,并且如果他们忘记了密码,他们会尝试这些密码。
可逆加密并不是更好。任何有权访问密码的人都可以访问正在进行解密和加密的任何内容。
我会建议反对这一点,而是尝试鼓励好的密码,而不是防止不好的密码。
答案 1 :(得分:0)
您真的需要查看使用了哪些不正确的密码吗?实际上,在不知道它们是什么的情况下拒绝常用密码就足够了。
您可以使用常用的单向散列函数,例如bcrypt
并存储散列值。针对每个哈希值,保留一个计数器以指示它们的使用频率。所有操作(例如阻止用户)都将基于散列密码,而不是普通密码。