Security 使用cookies在数据库中安全存储加密的第三方密码
显然,存储任何类型的第三方凭据都是一个重大风险,我希望尽可能避免它。然而,我有一个关于如何相对安全的想法,我想听听关于这个策略的一些意见:Security 使用cookies在数据库中安全存储加密的第三方密码,security,cookies,encryption,Security,Cookies,Encryption,显然,存储任何类型的第三方凭据都是一个重大风险,我希望尽可能避免它。然而,我有一个关于如何相对安全的想法,我想听听关于这个策略的一些意见: MySite允许用户注册用户名和密码(或Facebook,随便什么) 如果该用户还使用用户名和密码在AllTheData.com(此处称为ATD)网站上注册,他们可以通过HTTPS向我提供用户名和密码 MySite接收ATD的第三方凭据,并执行两项操作:创建一个新的加密密钥,将其存储在用户的cookie中,然后使用该密钥加密用户名和密码,并将这些加密值存储在
谢谢!我同意CBroe的评论。与强迫用户放弃宝贵的凭据相比,有更好的方式与第三方进行交互。我建议您研究以下内容。它允许您的用户使用许多很棒的功能:
- 他们只向ATD出示ATD证书
- ATD可以让他们控制系统可以为他们执行的数据或操作。用户有权随时撤销系统的访问权限
- 您希望与之集成的大多数大型第三方已经
既然您已经声明OAuth不是一个选项,那么在使用您建议的解决方案之前,我会再尝试一次攻击计划。您已经承认您的解决方案是非常短暂的;一旦用户清除了他们的cookie,您就要求他们再次登录。如果您调用的服务在登录时创建会话,您可以简单地转发t他将用户凭据发送给第三方,并临时缓存服务通常返回给用户的任何令牌或会话ID(我认为没有理由将其存储在数据库中)。然后,您可以在用户注销系统后删除该令牌。这使您无法直接存储他们的凭据。这并不是一个很大的进步,但这是我首先要做的 如果将此与cookie加密思想结合起来,我认为会得到很好的分离。您在服务器上缓存了加密的身份验证令牌,但只有将加密密钥存储为cookie的用户才能访问它。正如您所说,这会阻止您的服务器在您受到威胁时向第三方提供访问权限.如果你的客户受到威胁,你实际上得不到任何保护,但我认为这是不可避免的
如果系统需要为每个请求提供凭据,那么我真的看不到更好的方法。您已经完成了准备工作,我看不到任何更好的解决方案。我同意CBroe的评论。与第三方交互有比强迫您的用户放弃其宝贵凭据更好的方法。我建议您使用into类似于。它允许您的用户使用许多很棒的功能:
- 他们只向ATD出示ATD证书
- ATD可以让他们控制系统可以为他们执行的数据或操作。用户有权随时撤销系统的访问权限
- 您希望与之集成的大多数大型第三方已经
既然您已经声明OAuth不是一个选项,那么在使用您建议的解决方案之前,我会再尝试一次攻击计划。您已经承认您的解决方案是非常短暂的;一旦用户清除了他们的cookie,您就要求他们再次登录。如果您调用的服务在登录时创建会话,您可以简单地转发t他将用户凭据发送给第三方,并临时缓存服务通常返回给用户的任何令牌或会话ID(我认为没有理由将其存储在数据库中)。然后,您可以在用户注销系统后删除该令牌。这使您无法直接存储他们的凭据。这并不是一个很大的进步,但这是我首先要做的 如果将此与cookie加密思想结合起来,我认为会得到很好的分离。您在服务器上缓存了加密的身份验证令牌,但只有将加密密钥存储为cookie的用户才能访问它。正如您所说,这会阻止您的服务器在您受到威胁时向第三方提供访问权限.如果你的客户受到威胁,你实际上得不到任何保护,但我认为这是不可避免的 如果系统对每个请求都需要凭据,那么我真的看不到更好的方法。您已经完成了准备工作,我看不到任何更好的解决方案。这还不错,尽管不是允许访问第三方系统的最佳方法 确保
MySite\u密钥
是由加密安全算法生成的,因此攻击者无法预测该密钥,并尽可能保护此cookie。如果您的站点上存在任何漏洞,则该cookie对攻击者来说非常有价值