我正在实现一个用户登录系统,只想让社区解决我的安全问题。
我计划在创建用户帐户时使用 Java 的 PBKDF2 加密并将用户密码/盐存储在数据库中。当然,一切都将通过 HTTPS 完成。我使用的资源包含记录如何实现此功能的实际源代码,我将在问题末尾包含该链接。
进入“记住我”功能。实现这一点的正确方法是:
- 登录时生成 UUID 会话密钥,将密钥存储在数据库中,将密钥客户端存储在 cookie 中。
- 创建新会话时,从 cookie 中获取密钥,与数据库进行比较,创建新密钥并在客户端恢复。
这里有安全漏洞吗?我知道很多资源建议还将用户 IP 地址与会话密钥一起存储,如果 IP 不匹配,则使密钥无效。如果用户来自移动网络,IP 不是经常变化吗?即使在 wifi 上,这些天似乎大多数应用程序都没有使用 ip 验证?假设您的动态 IP 更改,Gmail 之类的应用程序不会将您注销,对吗?
资源:
在 Java 中存储安全密码:http ://www.javacodegeeks.com/2012/05/secure-password-storage-donts-dos-and.html