文章彙整

如何在Magento2 system config設置加密欄位

Astral WebBy Astral Web 2 months agoNo Comments
首頁  /  Magento  /  Magento-2  /  如何在Magento2 system config設置加密欄位

適用版本: Magento2.3以上

今天要來介紹如何在Magento2將資料加密再存入core_config_data 資料庫表格裡

為什麼需要加密資料呢? 有些資料是敏感性、隱私性高的資料,像是與第三方廠商合作,串接系統時候,通常都會有非公開的API需要以一些金鑰、密碼值進行認證,像這類的資訊在後台填寫時候和存入資料庫時候就應該被加密,就可以預防有權限直接存取資料庫的管理者,也無法拿到金鑰和密碼。

讀者在實作前,應已知如何設定system config data的前提下來進行,如果還不知道如何設定,請詳見此篇Magento 2 資料設定欄位的方法

 

首先想在system config欄位不讓資料輸入時候顯示明碼,就需要將欄位的type改成obscure,如下面

<field id="password" translate="label" type="obscure" sortOrder="25"  showInDefault="1" showInWebsite="1" showInStore="1">
     <label>Password</label>
     <validate>required-entry</validate>
</field>

這樣輸入時候就會是*****的樣子,但這樣存入資料庫還是明碼的,需要再加上加密用的backend_model設定,如下面

<field id="password" translate="label" type="obscure" sortOrder="25"  showInDefault="1" showInWebsite="1" showInStore="1">
         <label>Password</label>                                  
        <backend_model>Magento\Config\Model\Config\Backend\Encrypte</backend_model>
         <validate>required-entry</validate>
</field>

這樣進入資料庫查看資料時候,它將會呈現類似’3MVG910YPh8zrcR3QKo4Ar5iTtf2uAarY4nTzP4y9aowjWn2fkTYVmIUjEFoNo9cYGwcRrku_dXjE2pBn3ZHb’加密過後的亂碼,必須透過程式來將它解密取得一般的密碼。

這時要取得system config data的資料,透過Magento\Framework\App\Config\ScopeConfigInterface implemented by Magento\Framework\App\Config class 去取得時候,發現都還是加密過後的資料該怎麼辦?

相信有的讀者會使用Magento\Framework\Encryption\EncryptorInterface, implemented by Magento\Framework\Encryption\Encryptor class來進行將ScopeConfig取得的字串進行加密與解密,雖然這也是一個辦法,但其只要在config.xml裡所加密的欄位裡加上backend_model=”Magento\Config\Model\Config\Backend\Encrypted”的屬性,就可以輕鬆達到此目的,如下面所示

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
   <default>
       <test>
           <configuration>
               <password 
               backend_model="Magento\Config\Model\Config\Backend\Encrypted"/>                                                     
           </configuration>
       </test>
   </default>
</config>

以上就是在Magento2 將欄位加密的方法,非常方便簡單快速。

有任何問題,也歡迎隨時聯絡我們喔!

 

以上就是本次的分享,想收到更多相關資訊請務必訂閱我們的​電子報​,以及追蹤歐斯瑞​臉書粉絲團​和​Instagram​唷!

以上內容由Astralweb 歐斯瑞編寫製作

 000

推薦文章

Categories:
  Magento-2MagentoMagento開發

留下回應

你的電子郵件地址不會被公開.

請到您的信箱確認,即可完成訂閱。