2

システム構成フィールドのデフォルト値の設定はよく理解されていますが ( Chapagainと@alan storm のブログ投稿を介して)、パスワード フィールドはデータベースに保存されるときに暗号化されるため、異なります。したがって、Magento が config.xml からデフォルト値を読み取るときに、値の復号化を試み、デフォルトがプレーンテキストの場合は失敗します。

$setup->setConfigData('config/path/here', md5('default'))これらのデフォルトを指定するための XML ヘルパーまたはプロセス (を使用してセットアップ スクリプトを作成する以外) はありますか?

4

2 に答える 2

3

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

各ストアには独自の暗号化キーがあるため、これはモジュールの配布には役立ちません。

また、読み込みと処理の際に、backend_model属性(自己リンクの免責事項、インターネット上の他の場所に文書化されていない)を調べる必要があります。config.xml

お役に立てば幸いです。

于 2012-06-22T03:23:53.783 に答える
2

興味深い質問/思考実験ですが、現在の動作は合理的なようです。値のデータ ストレージに暗号化が必要な場合、config.xml であろうとインストール/アップグレード スクリプトであろうと、機能値がファイル システムのどこにでもプレーン テキストで存在することが適切であるとは思えません。

自分で暗号化するという他の唯一のオプションは、配布する必要があり、暗号鍵の値を認識している必要があるため、望ましくない可能性があります。

于 2012-06-22T03:54:15.023 に答える