我们有一个桌面和移动应用程序,用于访问许多第三方服务。这些服务有一些潜在的敏感信息——例如身份验证令牌,在某些情况下还有明文用户名/密码。
我们希望提供一项服务来在多台计算机和设备之间同步他们的设置。也就是说 - 他们登录我们提供的服务,然后在他们登录的任何地方同步该信息。
我们无法强制第三方应用程序停止使用明文密码。
我们考虑了几种方法:
永远不要发送密码或身份验证令牌。
当用户在新设备上登录时,他们需要为每个第三方服务重新输入/验证设备。
优点:安全,没有密码/令牌泄露的风险。
缺点:对用户来说很难。使用客户端证书或硬件令牌加密敏感信息。
当用户想要登录时,他们会提供证书/硬件令牌。
优点:非常安全。
劣势:进入门槛高,非营利性应用难以实施。使用用户提供的密码加密敏感信息
当用户在新设备上登录时,系统会提示他们提供密码。
如果密码不正确,他们需要重新输入/验证所有其他设备。优点:安全,如果用户提供强密码。
缺点:如果用户重置密码,他们需要为所有第三方应用程序重新验证设备。加密我们服务器上的敏感信息。
优点:方便用户。
缺点:对于抓取设置表的任何人来说,工作量只比明文多一点。不要费心加密任何东西。(明文存储)
优点:方便用户。
缺点:任何获取我们数据库的人都可以轻松获取所有用户的密码/身份验证令牌。
我的问题是:有没有我们还没有考虑过的更好的方法?