其他会话上的PHP Imap身份验证

其他会话上的PHP Imap身份验证,php,imap,Php,Imap,我有一个已经构建并运行了auth层的应用程序。我希望在此应用程序中添加一个小型imap客户端,但不确定如何处理imap身份验证。我一直在构建身份验证系统,对密码进行加密/散列,然后立即销毁纯文本密码的任何痕迹。。。因此,我从未有过处理需要维护的密码的经验 我希望用户能够从应用程序内部或首次登录时登录到imap,并在使用应用程序的其他功能时保持该登录 任何提示都很好。。。谢谢。不幸的是,IMAP协议要求您知道共享密钥的密码,才能对其进行身份验证。当您登录到IMAP时,您可以直接使用它,或者使用类似

我有一个已经构建并运行了auth层的应用程序。我希望在此应用程序中添加一个小型imap客户端,但不确定如何处理imap身份验证。我一直在构建身份验证系统,对密码进行加密/散列,然后立即销毁纯文本密码的任何痕迹。。。因此,我从未有过处理需要维护的密码的经验

我希望用户能够从应用程序内部或首次登录时登录到imap,并在使用应用程序的其他功能时保持该登录


任何提示都很好。。。谢谢。

不幸的是,IMAP协议要求您知道共享密钥的密码,才能对其进行身份验证。当您登录到IMAP时,您可以直接使用它,或者使用类似CRAM-MD5的东西


但是,根据服务器的不同,通常可以通过至少每30分钟发出一次NOOP来无限期地维护IMAP连接。但是,任何网络问题都需要您重新登录。

不幸的是,IMAP协议要求您知道共享密钥的密码,以便能够对其进行身份验证。当您登录到IMAP时,您可以直接使用它,或者使用类似CRAM-MD5的东西


但是,根据服务器的不同,通常可以通过至少每30分钟发出一次NOOP来无限期地维护IMAP连接。但是,任何网络问题都需要您重新登录。

有关信息,我查看了roundcube代码,然后

Roundcube仅在会话中:

$_SESSION['user_id']      = $user->ID;
$_SESSION['username']     = $user->data['username'];
$_SESSION['storage_host'] = $host;
$_SESSION['storage_port'] = $port;
$_SESSION['storage_ssl']  = $ssl;
$_SESSION['password']     = $this->encrypt($pass);
$_SESSION['login_time']   = time();
$this->encrypt$pass是指使用MCrypt应用3DES加密的

然后使用对称方法:


顺便说一下,加密方法似乎使用了一种叫做crypto_key的秘密salt。

有关信息,我查看了roundcube代码,然后

Roundcube仅在会话中:

$_SESSION['user_id']      = $user->ID;
$_SESSION['username']     = $user->data['username'];
$_SESSION['storage_host'] = $host;
$_SESSION['storage_port'] = $port;
$_SESSION['storage_ssl']  = $ssl;
$_SESSION['password']     = $this->encrypt($pass);
$_SESSION['login_time']   = time();
$this->encrypt$pass是指使用MCrypt应用3DES加密的

然后使用对称方法:


顺便说一下,加密方法似乎使用了一种称为crypto_key的秘密salt。

谢谢您的回复。所以,如果我想让会话变量保持登录状态,我需要在会话变量中保存一个纯文本密码?你能为我提供更多关于NOOP的信息吗?NOOP本质上只是一个IMAP命令,它说你不想做任何操作,但告诉服务器你还在,它可以发送任何更新。但是,是的,不幸的是,您确实需要将密码存储在某个地方。谢谢。关于如何安全地存储密码有什么建议吗?就像我提到的,直到现在我才想起这个想法。像RoundCube这样的软件包是如何处理它的?我实际上一点也不懂PHP,但我试图帮助解决IMAP问题。可能无法完全安全地存储密码,但您可以始终使用加密,至少让攻击者难以获取密码,除非他们也拥有解密密钥。例如,如果您想将密码存储在cookie中,您可以使用公钥加密来存储密码,希望只有你有私钥来描述它。谢谢你的回复。所以,如果我想让会话变量保持登录状态,我需要在会话变量中保存一个纯文本密码?你能为我提供更多关于NOOP的信息吗?NOOP本质上只是一个IMAP命令,它说你不想做任何操作,但告诉服务器你还在,它可以发送任何更新。但是,是的,不幸的是,您确实需要将密码存储在某个地方。谢谢。关于如何安全地存储密码有什么建议吗?就像我提到的,直到现在我才想起这个想法。像RoundCube这样的软件包是如何处理它的?我实际上一点也不懂PHP,但我试图帮助解决IMAP问题。可能无法完全安全地存储密码,但您可以始终使用加密,至少让攻击者难以获取密码,除非他们也拥有解密密钥。例如,如果您想将密码存储在cookie中,您可以使用公钥加密来存储密码,希望只有你有私钥来描述它。