PHP Imap Auth优于其他会话

时间:2012-08-17 17:33:03

标签: php imap

我有一个已经构建并运行的auth层的应用程序。我想在这个应用程序中添加一个小的imap客户端,但不知道如何处理imap auth。我总是构建auth系统来密码/哈希密码,然后立即销毁任何明文密码的痕迹......所以,我从未有过处理我需要维护的密码的经验。

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

任何提示都会很棒......谢谢。

2 个答案:

答案 0 :(得分:4)

有关信息,我查看了圆形立方体代码然后......

Roundcube在会话中只是encrypt the password and stores it

$_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加密的rcube::encrypt

然后它使用对称rcube::decrypt方法when needed

$host = $_SESSION['storage_host'];
$user = $_SESSION['username'];
$port = $_SESSION['storage_port'];
$ssl  = $_SESSION['storage_ssl'];
$pass = $this->decrypt($_SESSION['password']);

顺便说一句,加密方法似乎使用了一个秘密盐(这里称为“crypto_key”)。

答案 1 :(得分:1)

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

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