Magento CE использует шифрование MD5.. Насколько сложно перейти на лучший метод шифрования?
Быстрый буфер, я очень мало знаю о методах шифрования и о том, как они реализованы, я просто немного знаю о качестве и важности хорошего и плохого метода шифрования. Насколько я понимаю, Magento CE использует очень слабый метод шифрования MD5, который широко известен как тусклый и должен даже перестать использоваться. Однако Magento EE использует SHA-256, который известен как гораздо более сильная альтернатива.
Как двусторонний вопрос, являются ли мысли Magentos о том, чтобы CE использовал MD5 строго бизнес-решением, чтобы подтолкнуть поставщиков к EE для более сильного метода?
И насколько сложно было бы обновить текущий метод CE с MD5, чтобы сказать SHA-256 самостоятельно, без необходимости Magento внедрять изменения для нас?
Спасибо!
1 answers
Magento использует метод getHash()
в основном помощнике:app/code/core/Mage/Core/Helper/Data.php
public function getHash($password, $salt = false)
{
return $this->getEncryptor()->getHash($password, $salt);
}
Если вы посмотрите на метод getEncryptor()
, вы увидите, что вы можете определить свою собственную модель шифрования:
public function getEncryptor()
{
if ($this->_encryptor === null) {
$encryptionModel = (string)Mage::getConfig()->getNode(self::XML_PATH_ENCRYPTION_MODEL);
if ($encryptionModel) {
$this->_encryptor = new $encryptionModel;
} else {
$this->_encryptor = Mage::getModel('core/encryption');
}
$this->_encryptor->setHelper($this);
}
return $this->_encryptor;
}
Вам нужно создать новый узел xml global/helpers/core/encryption_model
, в котором вы можете определить свою собственную модель. И если вы расширите свою новую модель шифрования с Mage_Core_Model_Encryption
, вы можете использовать все основные функции и просто перезаписать конкретный метод:
public function hash($data)
{
return md5($data);
}
Я не рекомендую вам менять метод хэширования в производстве Система, потому что если вы измените метод хеширования, ваш существующий клиент больше не сможет войти в систему.