我正在创建一个移动REST API。我需要加密秘密访问密钥吗?
当前,当用户使用电子邮件和密码登录时,我生成密钥会话密钥(64个字符长),将其存储在数据库中并发送给用户,以便用户无需再次登录以便将来请求,直到他们注销。
对于下一个请求,我只是检查提供的会话密钥是否与数据库中的密钥相同。
但是,我在这个方案中看到了一个很大的安全漏洞。如果攻击者能够访问数据库,他们可以使用密钥并冒充任何人而不知道密码。除了掩盖用户的真实密码之外,在这种情况下加密密码有什么意义 - 它不会阻止其他任何事情。
所以,我的问题是你如何正确存储这些访问密钥?
Twitter将在其API上登录时发送会话密钥。那么,他们如何存储这些密钥?
谢谢。
但是这个方案不允许从多个设备登录到同一个帐户,除非我有一对多关系数据库表的会话密钥。因为在第二次登录时,我们不会再知道(非哈希)会话密钥。是对的吗? – moeseth
@moeseth:对,您无法以这种方式在多个客户端设备之间共享相同的会话密钥。通常,人们会将这些视为单独的*会话*属于相同的*用户*。 –