「資安 ISSUE
」,此語一出,誰與爭鋒?約莫 15 年前,跟前輩在閒聊,說客戶那邊丟了一句「資安 ISSUE」,所以這個元件不准用、那個 SDK 不准裝,結果東西做好了,案子結不了案。時間回到今天,資安那邊丟了一個訊息:
appsettings.Development.json 裡面的 Server=(localdb)\MSSQLLocalDB;Database=dev;Integrated Security=true 這個連線字串有資安疑慮,請修正。
汝母安好否?好,我改。
微軟爸爸早料到我們會有這麼一天了,已經幫我們準備好了,如何在 ASP.NET Core 的開發中安全儲存應用程式秘密,在文章中有教使用 CLI 啟用 Secret Storage 的方式,但我這邊分享純手工的方式。
建立 UserSecrets 資料夾
首先,在 %APPDATA%\Microsoft
資料夾中,如果沒有看到 UserSecrets
資料夾,請手動建立它。
產生 UserSecretsId
這個 UserSecretsId
不一定要是 GUID 的格式,自己開心就好,但通常是 GUID 格式,假設產生的 UserSecretsId 是「n83x82c5a3gvd9vkdp75qc8d5x8ku67bmhcjfwfimhn7eg5t6yxdzqum9e6q275x」,開啟專案檔,將 UserSecretsId 塞進 <PropertyGroup>
之中。
接著,用 UserSecretsId 在 %APPDATA%\Microsoft\UserSecrets 中建立一個資料夾。
建立 secrets.json
最後,在 UserSecretsId 資料夾裡面建立 secrets.json
,這個 secrets.json 就是我們開發者本機的 appsettings.json,ASP.NET Core 應用程式載入時,會套用 secrets.json 裡面的設定。
現在我在 secrets.json 新增以下設定值:
{
"ConnectionStrings": {
"DefaultConnection": "Default DB Connection String"
}
}
而原本專案內的 appsettings.json 及 appsettings.Development.json 都保持預設值不動,此時存取到的設定值,可以看到就是 secrets.json 裡面的設定值。
「本來無一物,何處惹塵埃。」,最沒有資安疑慮的設定值就是沒有這個設定值。