如何在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唷!
我要留言