Dam*_*mon 24
由于不打算存储密码,但也不需要多次重新输入密码,我看到的唯一解决方案是:
这不是完美的,但它应该运作得相当好,并且它可能是一个很好的权衡,你可以得到.
对于每个请求,用户的浏览器将发送cookie,PHP脚本可以使用cookie来解密存储在会话中的数据并在IMAP/POP服务器上执行请求.
利用您的服务器并获得对会话存储的访问权限的人将能够窃取加密密码,但如果您的随机密钥具有足够的长度和良好的随机质量,则这是徒劳的.
关键是,你只能用一个你不知道的秘密来确保安全.如果您有必要的信息来解密服务器上的某些信息(在这种情况下为IMAP密码),例如在会话存储中,那么利用您的服务器的每个人都可以这样做.无论您的加密有多强,它都没有任何区别.
确保秘密保密的唯一方法是使用您不知道的东西加密它们,只有用户(或在这种情况下是用户的浏览器)知道的东西.
这导致了无法解决的问题,在某个时间点,你显然必须知道,至少在几分之一秒内.这是接收cookie的Web服务器和退出的PHP脚本之间的时间.从理论上讲,如果有root权限的人在此期间阅读进程内存,他也会知道这个秘密.但唉,这是你真正无法阻止的事情.
只要信息永远不会存储在任何地方(甚至在会话中),它应该是相当安全的.
当然,所有这些都假设至少您网站上的登录页面(最好全部)都是通过服务提供的https://,并且您使用TLS/SSL与邮件服务器进行通信.否则,你会受到更多琐碎的攻击.