如何在 google 应用引擎中安全地存储外部身份验证凭据

How to securely store external auth credentials in google app engine

我正在创建一个使用 Google App Engine (python) 作为后端的移动应用程序。用户在应用程序上使用 Twitter 登录,身份验证令牌和密码被传递到后端(通过 https),以便服务器可以使用 Twitter 进行身份验证,并在后台任务中定期同步朋友和关注者。因为它们由后台线程使用,所以我想将信息存储在数据存储区中,以便以后检索和使用它们。

现在,在开发和测试期间,我只是将它们以纯文本形式放入数据存储区。但我想通过加密存储并在需要时解密来增加一点安全性。感谢您的帮助!

一般账号密码,我用

security.generate_password_hash(raw_password, length=12)

基于 webapp2_extras 存储密码的方式。但是这种方法不允许我检索数据。有没有类似的可以加解密的?

通常对于密码存储,您会使用单向(单向)加密技术,这样就没有人可以计算出密码是什么,然后获取用户提供的值并将它们与存储的值进行比较。这样您就永远不会真正存储实际密码,并且它不太可能被盗。

您正在寻找的是一种双向加密技术,您可以在其中提供值和密钥来创建加密值,然后可以将密钥应用于加密值以获得原始值。

您没有说明您使用的是哪种语言,因此我无法提供一个很好的示例,但我建议您查看 AES 等技术。请记住,如果您选择使用短密钥的加密技术,那么暴力破解会容易得多。任何双向加密都有更容易被暴力破解的风险,一旦密钥被确定,所有密码都有被解密的风险。大多数语言都以某种形式支持 AES 和类似的加密技术。

有很多可用的技术,有些技术更新更安全,所以做一些研究看看你认为什么 'secure enough'。

在此处阅读更多内容:http://en.wikipedia.org/wiki/Advanced_Encryption_Standard