我需要存储密码并再次使用它,但我认为这样做并不安全。
场景:
我想创建一个 Web 邮件程序,用户使用用户名和密码登录后可以查看他们的电子邮件。该工具不打算将密码存储在数据库中。但是在 PHP 中,我们需要在用户导航到每个页面时连接到邮件服务器。因此,需要用户名和密码来连接邮件服务器。如何以最安全的方式完成此操作?
我需要存储密码并再次使用它,但我认为这样做并不安全。
场景:
我想创建一个 Web 邮件程序,用户使用用户名和密码登录后可以查看他们的电子邮件。该工具不打算将密码存储在数据库中。但是在 PHP 中,我们需要在用户导航到每个页面时连接到邮件服务器。因此,需要用户名和密码来连接邮件服务器。如何以最安全的方式完成此操作?
因为不想存储密码,但又不希望多次输入密码,我唯一看到的解决方案是:
虽然不完美,但应该可以很好地运作,并且可能是你可以得到的最好的权衡。
每次请求时,用户的浏览器将发送cookie,PHP脚本可以使用cookie解密存储在会话中的数据并对IMAP / POP服务器发出请求。
入侵您的服务器并获得对会话存储的访问权限的人将能够窃取加密密码,但如果您的随机密钥足够长且具有良好的随机质量,则这是相当无用的。
关键是,您只能使用您不知道的秘密来确保某些东西真正安全。如果您拥有解密服务器上某些信息(在本例中为IMAP密码)所需的信息,例如在会话存储中,每个入侵您的服务器的人都可以做到同样的事情。无论您的加密有多强,都没有任何区别。
确保秘密保持秘密的唯一方法是使用您不知道的东西来进行加密,只有用户(或在本例中为用户的浏览器)知道。
这导致了无法解决的问题:在某个时刻,您显然必须知道,至少有几分之一秒。那是网络服务器接收cookie并退出PHP脚本之间的时间。理论上,如果某个具有root访问权限的人在那段时间内读取进程内存,他也会知道秘密。但遗憾的是,这是您真正无法防止的事情。
只要不将信息存储在任何地方(即使不在会话中),它就应该相当安全。
https://
提供,并且使用TLS / SSL与邮件服务器通信。否则,您将面对更为轻松的攻击。