我需要存储密码并再次使用它。我认为这一点也不安全。
场景:
我想创建一个网页邮件程序,用户登录与用户名和密码,然后检查他们的电子邮件。此工具不打算将密码存储在数据库中。但在PHP中,我们需要连接到用户导航到的每个页面中的邮件服务器。因此需要用户名和密码才能连接到邮件服务器。如何才能以最安全的方式做到这一点?
发布于 2013-01-12 22:05:57
由于存储密码并不是预期的,而且还必须多次重新输入密码也是不可取的,我看到的唯一解决方案是:
中
这并不完美,但它应该工作得相当好,而且它可能是您所能得到的最好的权衡。
对于每个请求,用户的浏览器将发送cookie,PHP脚本可以使用cookie来解密会话中存储的数据,并在IMAP/POP服务器上执行请求。
有人利用您的服务器并获得访问会话存储的权限,将能够窃取加密的密码,但如果您的随机密钥具有足够的长度和良好的随机质量,这是非常徒劳的。
关键是,你只能用一个你不知道的秘密来保护一些东西。如果您有必要的信息来解密服务器上的某些信息(在本例中为IMAP密码),例如在会话存储中,每个使用您的服务器的人都可以执行相同的操作。无论你的加密有多强,都不会有任何不同。
确保秘密保密的唯一方法是用你不知道的东西加密它们,只有用户(或者在这种情况下是用户的浏览器)知道的东西。
这导致了一个无法解决的问题,在某个时间点上,你显然必须知道,至少在一小段时间内。这是web服务器接收cookie和PHP脚本退出之间的时间。理论上,如果某个拥有root访问权限的人在这段时间内正在读取进程内存,那么他也应该知道这个秘密。但是,这是你真的不能阻止的。
但是,只要信息永远不会存储在任何地方(甚至不在会话中),它就应该是相当安全的。
当然,所有这些都假设您站点上的登录页面(最好是全部)至少是通过https://
提供的,并且您使用TLS/SSL与邮件服务器进行通信。否则,您将面临更多微不足道的攻击。
https://stackoverflow.com/questions/14293815
复制相似问题