xml - 在 Magento 系统配置中为密码字段设置默认值

标签 xml magento encryption configuration passwords

设置系统配置字段的默认值很好理解(通过@alan storm 的Chapagainblog post),但密码字段不同,因为它们在保存到数据库时被加密。因此,当 Magento 从 config.xml 中读取默认值时,它会尝试解密该值,但如果默认值是明文,则会失败。

是否有 XML 帮助程序或进程(除了使用 $setup->setConfigData('config/path/here', md5('default')) 创 build 置脚本)来指定这些默认值?

最佳答案

我不是 100% 确定(这是一个快速的 grep),但我认为密码加密发生在

File: app/code/core/Mage/Adminhtml/Model/System/Config/Backend/Encrypted.php 
protected function _beforeSave()
{
    $value = (string)$this->getValue();
    // don't change value, if an obscured value came
    if (preg_match('/^\*+$/', $this->getValue())) {
        $value = $this->getOldValue();
    }
    if (!empty($value) && ($encrypted = Mage::helper('core')->encrypt($value))) {
        $this->setValue($encrypted);
    }
}

请记住,这是一种加密,而不是散列。由于您正在存储要在某处使用的密码(最常见的是支付 API),因此 Magento 需要能够解读已加扰的内容。因此,您可以使用核心助手的 encrypt 方法生成这些值。你也可以尝试这样的事情

$o = Mage::getModel('adminhtml/system_config_backend_encrypted');
$o->setData('value','encrypted or unencrypted value');

$o->beforeSave();     //to encrypt the value

$o->afterLoad();      //to unencrypted the value

$password = $o->getValue();  //fetch the value

请记住,每个商店都有自己的加密 key ,因此这对分发模块没有用。

您还应该查看 backend_model config.xml 加载和处理中的属性(自链接免责声明,未在 Internet 上的其他任何地方记录)。

希望对您有所帮助。

关于xml - 在 Magento 系统配置中为密码字段设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149615/

相关文章:

mysql - OpenCart - XML 到 MySQL

magento-1.7 - Magento : System/Config Add Custom Value in MultiSelect

magento - Magento 中 Javascript 的区域设置语言

c++ - 加密演算法

encryption - 使用外部 key 解密加密的 gpg 文件

c# - 将默认主题应用于图表系列

java - 使用 JDOM 查找后代元素

java - 如何将 XML 转换为 java.util.Map,反之亦然?

mysql - Magento - 注册错误 - 1054 'ca.sort_order' 中的未知列 'order clause'

security - 您使用哪种哈希方法(MD5、SHA1、其他?)