Criptografando com Magento
Backend, Desenvolvimento, Magento 1
Atualizado em 16 de fevereiro de 2022
Com o avanço das tecnologias e da exploração de vulnerabilidades, torna-se cada vez mais importante não salvarmos dados sensíveis sem nenhuma criptografia em nossas tabelas. Tudo que puder ser usado para dificultar o vazamento de senhas e dados sensíveis deve ser feito, principalmente no e-commerce.
Tanto o Magento Open Source (Community Edition) como o Enterprise Edition possuem formas seguras de guardar dados sensíveis. Apesar de uma das diferenças entre as versões ser justamente o tipo de criptografia utilizada, ambos são capazes de guardar com segurança dados como tokens, senhas, e outros dados sensíveis. E a forma de fazer isso durante o desenvolvimento de um módulo é relativamente simples e muito pouco explorada pelos desenvolvedores.
Tipos de dados
Uma informação pode ser criptografada usando algoritmos diferentes dependendo do tipo de informação que vamos trabalhar. Quando se trata de dados que não precisam ser descriptografados, como senhas e credenciais, geralmente usa-se um padrão de hash, como md5, md6, sha, etc.
E para dados que precisam ser descriptografados para usar novamente depois, usa-se criptografias de duas vias, ou seja, que podem ser revertidas. E é desse tipo que vou falar neste post.
Criptografando no Magento
Ao desenvolver um módulo que precisa armazenar um dado criptografado de forma que ele possa ser revertido posteriormente devemos usar o método encrypt
e decrypt
, disponíveis na classe Mage_Core_Helper_Data
.
Desta forma, para criptografar uma informação, podemos usar:
Mage::helper('core')->encrypt($data);
E para reverter:
Mage::helper('core')->dencrypt($data);
O que acontece aqui?
Apesar da forma de utilização ser a mesma, o Magneto Open Source utiliza mcrypt do PHP para realizar a criptografia, enquanto a versão Enterprise utiliza a classe Enterprise_Pci_Model_Encryption
e um algoritmo SHA-256.
Mas o importante é saber que o elemento usado na reversão dos dados não é o mesmo de uma loja para outra.
O Magento utiliza a chave gerada automaticamente durante sua instalação para reverter os dados criptografados. Ou seja, cada loja tem a sua própria chave para reverter dados salvos com criptografia.
Posteriormente esta chave fica disponível em app/etc/local.xml.
<crypt> <key><![CDATA[93c9516bd363fa8b9fdd8c0382b0b24e]]></key> </crypt>
Idealmente ela deve ter entre 32 e 56 caracteres. Caso contrário você pode ter erros ao utilizar esta criptografia, assim como os módulos que a utilizam.
Use no seu módulo
Ao desenvolver um módulo que trabalha com tokens, ou outros dados sensíveis, é muito simples trabalhar com a criptografia do Magento.
No arquivo etc/system.xml do seu módulo, basta declarar um tipo de campo como “obscured” e com backend_model como mostrado abaixo. Desta forma o Magento automaticamente irá criptografar o dado salvo antes de guarda-lo na tabela core_config_data
.
<token translate="label"> <label>Token</label> <frontend_type>obscure</frontend_type> <backend_model>adminhtml/system_config_backend_encrypted</backend_model> <sort_order>20</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </token>
A crypt key esquecida
Como o arquivo app/etc/local.xml
geralmente não é versionado, ao migrar uma loja existente a key é frequentemente esquecida e gerada novamente. Com isso, as informações salvas na base não são revertidas de forma correta, ocasionando quebras nas configurações de módulos que usam a criptografia.
Portanto, lembre-se de migrar seu local.xml quando colocar sua loja em outro ambiente e salvar sua key em um lugar seguro.
Gostou das dicas?
Comente! Compartilhe!
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-1/desenvolvimento/backend/criptografando-com-magento/"]