【发布时间】:2015-10-24 20:01:44
【问题描述】:
我正在创建一个移动 REST API。
目前,当用户使用电子邮件和密码登录时,我会生成秘密会话密钥(64 个字符长),将其存储在数据库中并将其发送给用户,以便用户无需再次登录以进行将来的请求直到他们登出。
对于下一个请求,我只检查提供的会话密钥是否与数据库中的相同。
但是,我在这个方案中看到了一个很大的安全漏洞。如果攻击者可以访问数据库,他们可以使用密钥并在不知道密码的情况下冒充任何人。除了隐藏用户的真实密码之外,在这种情况下加密密码还有什么意义 - 它不会阻止其他任何事情。
那么,我的问题是如何正确存储这些访问密钥?
Twitter 将在登录其 API 时发送会话密钥。那么,他们如何存储这些密钥呢?
谢谢。
【问题讨论】: