我正在编写一项服务,用户使用OAuth登录其他服务。我的服务点是在用户未登录时为用户做一些维护。因此,我需要保存他们的OAuth令牌,以便在用户未登录时使用它。如果用户已登录在,我可以使用用户的密码作为加密密钥(每次询问;用户的密码只存储为哈希)并存储加密的令牌。
但实际上,我需要Web服务才能在用户未登录时使用这些令牌。所以,我正在考虑将它们加密存储在数据库(AES)中,但是后来解密它们的密钥将需要硬编码到应用程序中,或者从其他东西(用户名/电子邮件/散列密码的组合)中派生出来,尽管该派生的逻辑仍然在源中。
鉴于这将用PHP编写,不能编译为隐藏密钥,我最好的选择是什么才能使其尽可能安全?我的源代码一直都有数据库凭据,这意味着有人可能会弄乱该数据库,如果他们可以获得源系数,但手头有OAuth令牌意味着入侵者也可能弄乱用户在其他网站上的数据,如果我的应用受到了损害,我希望尽可能多地向用户提供不会发生的保证。
答案 0 :(得分:1)
首先使用OAuth令牌的部分原因是它们可以被撤销。像任何其他用户特定的数据一样保护令牌,这很充足。如果您有理由相信您的用户数据在将来的任何特定时刻遭到入侵,请通知您的用户并要求他们撤销令牌。