好吧,我有一个专用的托管服务器服务,它有一个 Plesk 面板用于管理,很多人都知道 Plesk 带有 RoundCube 作为网络邮件访问的默认服务。
我的问题是,已创建的电子邮件帐户的用户无法直接控制其帐户的选项,也就是说,在当前配置下,他们无法直接从 Webmail 服务更改密码或对其帐户执行其他管理活动。但是,如果在 Plesk 中创建电子邮件帐户时激活“可用于登录 Plesk”功能,则用户可以使用其电子邮件地址和密码作为用户进入 Plesk 登录,进入一个有限的功能面板,该面板允许他们执行我上面提到的此类活动,它甚至在“打开 Webmail”面板上有直接选项,这些让我想到了我的问题。
当您使用此选项时,它会将您发送到带有以下链接的 Webmail 服务地址“https://webmail.yourdomain.tld/roundcube/index.php?_user=usersaccount%40yourdomain.tld”,这会将您带到 RoundCube 的登录页面,其中用户字段已填写“[电子邮件保护]“。
有没有办法也可以为 RoundCube 提供密码字段?
我尝试在链接末尾添加选项“&_pass=userpass”,但这不起作用,就像执行“https://webmail.yourdomain.tld/roundcube/index.php?_user=usersaccount%40yourdomain.tld&_pass=userpass”一样。
我的想法是将 webmail 子域的 index.php 文件更改为模仿 Plesk 登录但与 webmail 访问相关的文件,该文件将凭据保存在临时 cookie 中,并修改“打开 Webmail”选项的链接以包含密码字段,以便用户可以直接访问他们的帐户,让最终用户感觉这是一个集成平台,类似于目前在 cPanel 中所做的。由于目前,Plesk 登录位于远离 webmail 登录部分的地址,并且 RoundCube 与 Plesk 地址没有任何关系,无法向用户提示他们可以管理他们的帐户而无需服务器管理员的干预,因此,随着平台的发展,最终用户直接管理其帐户的选项几乎不存在。
答案1
我强烈反对这样做。这对安全非常非常不利
我做了一些调查,发现可以修改 Webmail 表单以将密码注入密码字段。我预计这可能会因版本不同而略有不同,但在 Roundcube 1.6 版中,我可以通过编辑第 2345 行来实现这一点
/路径/到/roundcube/program/include/rcmail_output_html.php
搜索 $input_passwordfield 并进行修改,使其在 required => required 字段后包含 'value'=>$_REQUEST['_pass'] - 即更改
input_pass = new html_passwordfield(['name' => '_pass', 'id' => 'rcmloginpwd', 'required' => 'required']
# + $attrib + $pass_attrib);
到
$input_pass = new html_passwordfield(['name' => '_pass', 'id' => 'rcmloginpwd', 'required' => 'required','value'=>$_REQUEST['_pass']]
+ $attrib + $pass_attrib);
再说一遍-不要这样做。
我注意到,首先,这允许人们将包含密码的 URL 添加到书签中。您可以通过使用 $_POST 并通过表单提交来缓解此问题。
我也没有对输入进行任何形式的健全性检查。不知道这有什么影响。
当然,这一切都引出了一个问题“为什么密码首先以纯文本形式存储,你可以这样做?