长话短说,我正在开发一个内部报告引擎。它完全基于网络(使用 PHP 和各种 AJAX 技术),并通过我们的生产软件解释存储在 MySQL 数据库中的数据。它在 Ubuntu 8.04 服务器上运行,所有员工在该机器上都有一个 linux 用户帐户。我使用 pam_auth 设置了一个登录系统,它强制用户使用他们的 linux 用户帐户登录,并确定他们是否属于访问特定报告的适当组。
这部分效果很好,我的问题是使用 cookie 添加“记住我”功能。我希望用户有一个 30 天的 cookie,只是为了节省他们一些时间,并且每次会话到期时都必须登录。我编写了代码的“记住我”部分,它很好地存储了 cookie。我只存储他们的用户名和密码的 md5 哈希值。当需要重新验证它们时,问题就来了。通常我只需将存储的用户名与数据库中该用户的密码哈希进行比较即可。使事情复杂化的是我无法直接访问用户名和密码哈希。它们都存储在 /etc/passwd 和 /etc/shadow 中,登录由 PAM 模块处理。pam_auth 需要纯文本用户名和纯文本密码。
似乎我唯一的选择是将密码存储为纯文本,或者使用可逆加密,但我并不特别喜欢这些想法中的任何一个。
这里有更好的解决方案吗?