【问题标题】:How should I store Gmail authentication in my app?我应该如何在我的应用中存储 Gmail 身份验证?
【发布时间】:2012-05-02 00:53:47
【问题描述】:

我正在为一个客户用 PHP 开发一个邮件客户端,他们希望能够从这个单一的客户端处理他们所有的各种电子邮件帐户。

用户不应该每次想要使用该服务时都输入所有密码,这就是我的问题。有没有办法在不输入邮件帐户密码的情况下通过 Gmail 检索和发送邮件?有没有别的办法?还是我必须通过某种加密将密码保存在我的数据库中并使用“隐藏”密钥对其进行解密?

【问题讨论】:

  • 首先,What have you tried? 其次,您不能使用任何首选的密码散列方法来解密加密字符串。解密字符串的唯一方法是使用或创建自己的解密/加密函数(大多数个人加密方法使用 base64),但不推荐使用这种方法来处理密码,因为它们通常很容易被破解。
  • 好吧,我打算试试 AES_ENCRYPT()(mysql 函数)。但是我仍然需要保存加密密钥,我认为以这种方式保存密码是有风险的。我可能会将密码保存在表格中,并使用某种算法将密码链接到邮件帐户。但这也可能是一个不好的解决方法?
  • 是的。当前散列方法的全部目的是防止任何人(包括开发人员)取消散列这些密码。您需要为您的客户提供一种产品,让他们在输入密码时感到安全。听从 Drknezz 的建议,尝试 google 提供的令牌方法,并尽你所能地使用它。尽管听起来您可能在使用 Hotmail 时会遇到困难(就像使用 任何 Microsoft 产品一样)

标签: php mysql gmail email-client hotmail


【解决方案1】:

https://developers.google.com/google-apps/gmail/阅读 OAuth 部分。

OAuth 为您提供令牌,而不是密码。即使用户更改了他的 gmail 密码,该令牌也会允许您访问他的收件箱等。

至于 Hotmail...我认为没有 OAuth API,很遗憾。

请阅读以下内容以防万一: http://msdn.microsoft.com/en-us/library/live/hh826535

【讨论】:

  • 谢谢!听起来是个不错的解决方案,可惜hotmail 不支持。我会试一试的!
【解决方案2】:

电子邮件服务器的身份验证需要您传递密码,因此您对将密码存储在应用程序数据库中的加密和解密机制(密码)是正确的。如果有人获取您的数据,这将防止电子邮件密码被读取,但您需要小心应用程序如何存储要解密的密钥。以下是 PHP 中的一些密码扩展 http://www.php.net/manual/en/refs.crypto.php

【讨论】:

  • 啊!对于 OAuth 建议 +1,只要电子邮件具有这种形式的身份验证,它就有效。它更好,因为它授权 USER 和 APP。请注意,您必须在数据库中存储与用户关联的令牌(这意味着用户授权您的应用程序。冒充他)和您的应用程序。您需要一个使用者(秘密)密钥(它将您的应用程序关联为有效客户端)
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2020-11-30
  • 2020-12-16
  • 1970-01-01
  • 2021-10-04
  • 2018-11-23
  • 2011-05-25
相关资源
最近更新 更多