【发布时间】:2020-04-27 01:56:28
【问题描述】:
我目前正在使用 Evo CMS。我想创建一个备用后端,以比 Evo 的默认后端更优雅的方式显示数据。
我目前的问题是,如果我希望登录使用现有详细信息,我需要弄清楚密码是如何被散列的,我似乎在源代码的任何地方都找不到。
有什么方法可以让我找到知道散列密码和纯文本密码的密钥?
我认为 Evo 正在使用 Blowfish 加密。
【问题讨论】:
标签: hash passwords modx-revolution
我目前正在使用 Evo CMS。我想创建一个备用后端,以比 Evo 的默认后端更优雅的方式显示数据。
我目前的问题是,如果我希望登录使用现有详细信息,我需要弄清楚密码是如何被散列的,我似乎在源代码的任何地方都找不到。
有什么方法可以让我找到知道散列密码和纯文本密码的密钥?
我认为 Evo 正在使用 Blowfish 加密。
【问题讨论】:
标签: hash passwords modx-revolution
你所说的“秘密信息”叫做盐。但是,您处理此问题的方式并不理想,因为只有在 MODX 的密码加密和加盐方法保持不变时,才能对登录功能(MODX 的一项功能,将来可能会更改或更新)进行逆向工程。
如果您想使用 MODX 的登录功能,但在成功登录后显示不同的后端,最简单的方法是创建一个附加到 OnManagerLogin 事件的插件。 在该插件中,您可以编写一些代码以重定向到不同的管理界面。确保正确保护该管理界面。我建议在插件中实现一种令牌生成类型,为您的自定义后端生成令牌。 这样,只有具有有效令牌(在重定向之前生成)的用户才能使用您的自定义后端。
如果您想使用自定义登录表单,我建议您创建自己的登录功能或导入 MODX API 并运行security/login 处理器以通过 MODX 验证您的用户。
以下示例(未经测试!)可以在 MODX 之外的 PHP 脚本中使用。如果您打算使用它,则需要调整标有xxxxx 的路径。
require_once '/xxxxx/config.core.php';
require_once MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php';
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$output = $modx->runProcessor('security/login', array(
'username' => 'xxxxx',
'password' => 'xxxxx'
), array (
'processors_path' => '/xxxxx/core/model/modx/processors'
));
var_dump($output);
【讨论】: