实现用户登录系统的正确方法

时间:2016-11-22 11:15:27

标签: javascript php security ssl

我意识到标题与this question over here相同,但请不要吃我。这是为了确认我的理解,以及任何其他想要一站式商店的人。

因此,经过一些研究后,我编写了以下注释:

  1. 您需要某种可编程服务器后端,例如:php。只是数据库是不够的。您还应拥有有效的SSL证书。
  2. 与CSRF令牌建立SSL连接。 Source
  3. 通过SSL将未使用的密码发送到服务器
  4. 在服务器上,使用bcrypt哈希+ salt。按照您的预期存储此哈希+盐渍密码(对于SQL:在表中作为条目)。另外储存盐
  5. 登录后,继续使用SSL以防止会话劫持。如果SSL丢失了,强行重新登录(虽然如果你运气不好已经太晚了?)
  6. 登录时,通过SSL发送未散列的密码,将其适当地哈希+盐渍并与存储的版本进行比较。
  7. 第6点是我遇到的主要问题,我找不到更多信息。我已经读过somewhere,我也应该在每次登录尝试时输入密码。这准确吗?我该怎么做?

    无论如何,我的其余步骤是否正确?

2 个答案:

答案 0 :(得分:2)

  

第6点是我的主要问题,我无法找到更多信息。我在某个地方读到了我每次登录时都应该输入密码。这准确吗?我该怎么做?

切勿以纯文本格式发送密码。

浏览器应使用SSL将密码发送到服务器以加密通信。

服务器应使用与步骤4相同的方法对密码进行加密和散列。

然后,您将刚刚获得的盐渍,哈希密码与数据库中的盐渍,哈希密码进行比较。

答案 1 :(得分:-2)

虽然我不是一个骗子... 但我可以提出一些建议。 在生成密码时,获取密码,获取随机的4位数。 (盐) 连接它们......即密码+盐 然后将其传递给md5加密(ssl) 使用salt将结果字符串存储在db中。

登录时从文本字段获取密码,从数据库中获取salt,将它们连接起来。使用ssl加密 从db检查相等性。 就是这样。