我已经阅读了一些关于加密密码的文章,我读到的内容似乎是bcrypt的方法。
我几乎不了解加密技术,如果我将用户名添加到密码并哈希那么,从安全角度来看是否有任何区别?
为每个用户创建一个盐也有意义吗?如果我的数据库泄漏,那些盐也会存在,我是否应该用全球盐加盐?
加密用户的电子邮件地址是否有意义?
我打算做的任何事情都是:
+use bcrypt
+allow all characters in passwords
+force User to use a digit and special char in his password
+set the minimum password length to 8 chars
我没有构建需要超高安全性标准的应用程序,但我想为我的用户提供一些系列保护,以防我的数据库以某种方式泄露。 (希望它赢了)
答案 0 :(得分:2)
如果我将用户名添加到密码并使用哈希
,那么从安全角度来看是否有任何区别?
没有额外的安全性,特别是如果您已经在使用SALT。缺点是每次用户更改用户名时都必须重新散列并保留哈希值。
为每个用户创建一个盐是否有意义?
是的,这通常已经完成。
如果我的数据库泄漏,那些盐也会存在,我是否应该用全球盐加盐?
不,不加密它们。 SALT的目的只是强迫攻击者必须对每个用户/密码执行新的强力搜索,而不是对所有用户/密码进行一次暴力攻击。
加密用户的电子邮件地址是否有意义?
没有。除非你有一些(奇怪的)业务要求。
答案 1 :(得分:1)
在实施之前向你提问。不幸的是,这是我对你的最好的乐观点。
安全很难做到。事实上,非常难以做对。如果您对此不太了解,那么在您这样做之前不要尝试。与此同时,使用经过验证的基础设施,以(希望)正确的方式为您实现这一目标。应该有一个可用于您正在使用的任何框架,如果没有,可能有足够的理由进行切换。
那就是说,不使用盐的用户名,并且不打扰加密盐。您也不应该加密(或散列)用户的电子邮件地址,除非您或其他任何人永远不需要知道它(作为系统的维护者)。将用户名添加到密码中没有任何好处,并且有几个缺点,所以不要这样做。
就独特的盐而言 - 这是必须。没有它,你可能没有它。在继续之前,先阅读一下有关加密,散列和腌制(以及胡椒化)的内容。更好的是,使用已经为你做过的库,如前所述。