我正在为一个没有SSL的网站构建一个web登录系统,所以这里是我的实现:
我在服务器上有一个表,它有两个字段,一个原始用户名和pass_hashed(与sha1(密码)哈希)。当用户登录到我的系统时,我执行:
- 生成密钥
- password_hashed = sha1(key + sha1(password))
- 提交3个值:username, key, password_hashed
服务器端:
- 检查密钥是否存储在数据库中,如果是,则登录无效,否则将密钥保存到数据库。
- 根据用户名查询用户信息,然后比较sha1(key + pass_hashed)和password_hashed。
我的问题是我的方法还可以吗?如果是,我可以使用密钥作为时间戳吗?
虽然你的解决方案聊胜于无,但它最终是有缺陷的。这是因为在用户注册过程中的某个时刻,他们只需要发送部分信息。如果此时通过网络捕获信息,则以后可以重复任何登录。
你真的需要SSL
是的,这个组合似乎没问题。您想使用时间戳来生成密钥吗?
如果是这样,您可以从它开始,但尝试不同的组合,以帮助提高安全性。
根据其他用户的建议,您实现的系统不安全,可能会导致安全问题。如果您正在收集客户信息,则必须使用SSL证书。它不会花费更多。起价低至7美元!!