User Secrets v.s. Data Protection @NET5
比較 UserSecrets 與 DataProtection 機制。
引言
研究系統初始化時如何安全的初始化。發現了 ASP.NET Core 中開發應用程式秘密保管庫儲存體(即 UserSecrets) 與 設定 ASP.NET Core 資料保護(即 DataProtection) 就花了幾天時間研究。 跳過過程直接結論。
Data Protection
自動產生加密金鑰。
間接透過保護加密金鑰來保護資料。
可選用憑證來保護加密金鑰。經數十次試用,此保護用憑證(1)需內函私鑰,故於安裝部署時現場產製;(2)此保護用憑證只能放在憑證庫
Cert:\CurrentUser\My
的位置。最終保護依據是作業系統對 CurrentUser 的保護機制。
若不用憑證保護加密金鑰,也可選用【Azure Key Vault】或【DPAPI】或自行加工。
有二種應用模式:(1)自我保護模式;(2)主要/次要保護模式,其中主要端才可以加密;次要端只能解密。
自我保護模式,比較適合保護中繼形式的資料。
主要/次要保護模式,比較適合系統初始化取初始參數。
結論:若能保證初始化參數的安全性,那安全性還滿高的。
User Secrets
保護依據是作業系統對 CurrentUser 的保護機制。
保護資料固定放在:%APPDATA%\Microsoft\UserSecrets<user_secrets_id>\secrets.json
有加密金鑰,以明碼保存資料。所以…
可以與 IConfiguration (AddUserSecrets) 整合。
使用簡單,適合用於系統取得初始化參數。
但是!官方建議只能用在系統開發時期的個人隱私資料保護!(囧囧囧囧囧)
結論:這是個高級垃圾機制,因為不適合部署到正式環境使用!
個人認為:還是可以用在windows應用程式存放以個人帳號分隔的保密資料。
個人細思:這個設計該不會只是為了在開發期間原碼簽入時,各個開發人員帳密資料分隔與避免簽入SVN/Git吧?
Last updated