.NET Core環境變量和用戶祕鑰實現開發中的數據安全


前言:有很多人將祕鑰,數據庫連接字符串寫到項目配置文件中,並提交到源代碼控制或者共享源代碼控制,並在那裏使用,這使得項目出現了很大的風險。

首先新建一個 ASP.NET Core 的 MVC 項目,就可以直接進行測試。

一、注入 IConfiguration

首先將注入 IConfiguration 並命名爲 Configuration。

在配置文件中並未設置 Keycomputername 的屬性,

但是可以根據 @Configuration["computername"] 來獲取當前的PC的名稱。

因爲每臺 Windows 電腦都會創建一個名爲 computername 的環境變量。

將 Index.cshtml 修改爲入下圖所示。
在這裏插入圖片描述

在運行網站後得到的結果如下所示:
在這裏插入圖片描述

二、從配置文件 appsettings.json 中獲取環境變量

在配置文件中加入圖下紅框中的代碼。
在這裏插入圖片描述

將 Index.cshtml 修改爲入下圖所示。
在這裏插入圖片描述

在運行網站後得到的結果如下所示:
在這裏插入圖片描述

三、從項目中獲取環境變量

在解決方案目錄中選中當前 ASP.NET Core Web 項目

按下 Alt + Enter 打開項目屬性面板
或者 右鍵點擊項目 =》 選擇 屬性

隨後選擇調試(Debug)會有看到當前項目的環境變量了
在這裏插入圖片描述

隨後在環境變量裏面添加 先前在 appsetting.json 中添加的值
在這裏插入圖片描述

並且更改掉 appsetting.json 中的 Wechat 的值
在這裏插入圖片描述

在運行網站後得到的結果如下所示:
在這裏插入圖片描述

隨後我們得出結論: appsettings.json 優先級小於 項目的環境變量

四、用戶祕鑰設置環境變量

我們首先刪除掉 項目環境變量中的之前添加的Wechat,環境變量編程如下所示。
在這裏插入圖片描述

隨後右鍵選中項目選擇 管理用戶機密(Manage User Secrets)。

在這裏插入圖片描述

這時打開一個 secrets.json 的新文件,移動鼠標可以看到它的路徑。
在這裏插入圖片描述

當前文件不是一個加密的文件,並且它不是一個在源代碼控制的文件。

隨後在文件 secrets.js 加入代碼如下所示, appsettings.json 文件的Wechat 應如下所示,
項目的環境變量的 Wechat 的值已經被刪掉。
在這裏插入圖片描述

在運行網站後得到的結果如下所示:
在這裏插入圖片描述

隨後我們得出結論: secrets.json 優先級大於 appsettings.json

由於 secrets.json 並不會提交到源代碼控制中,保證了用於開發目的的數據更加安全。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章