亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

安全機(jī)密管理:Asp.Net Core中的本地敏感數(shù)據(jù)保護(hù)技巧

freeflydom
2024年5月27日 9:0 本文熱度 2128

前言

在我們開發(fā)過程中基本上不可或缺的用到一些敏感機(jī)密數(shù)據(jù),比如SQL服務(wù)器的連接串或者是OAuth2Secret等,這些敏感數(shù)據(jù)在代碼中是不太安全的,我們不應(yīng)該在源代碼中存儲(chǔ)密碼和其他的敏感數(shù)據(jù),一種推薦的方式是通過Asp.Net Core機(jī)密管理器。

機(jī)密管理器

在 ASP.NET Core 中,機(jī)密管理器通常指的是一種工具或機(jī)制,用于安全地存儲(chǔ)和管理應(yīng)用程序中的敏感數(shù)據(jù),如數(shù)據(jù)庫(kù)連接字符串、API 密鑰、密碼等。這樣的工具可以幫助開發(fā)人員有效地管理敏感信息,避免將其硬編碼在代碼中或與源代碼一同提交到版本控制系統(tǒng)中,從而提高數(shù)據(jù)安全性和保密性。

通過上面我們可以得知,應(yīng)用機(jī)密存儲(chǔ)和項(xiàng)目數(shù)在不同的位置,也就是說不被 git 等源代碼管理器所管理,所以不會(huì)隨源代碼遷入到遠(yuǎn)程服務(wù)器。

為什么要使用機(jī)密管理器:

  • 安全性:通過使用機(jī)密管理器,可以將敏感數(shù)據(jù)存儲(chǔ)在安全的位置,避免在代碼中明文存儲(chǔ)密碼等敏感信息,從而減少數(shù)據(jù)泄露的風(fēng)險(xiǎn)。

  • 便捷性:機(jī)密管理器提供了方便的方式來存儲(chǔ)和訪問敏感數(shù)據(jù),使開發(fā)人員能夠輕松地在開發(fā)過程中使用這些數(shù)據(jù),而無(wú)需擔(dān)心泄露或不當(dāng)處理。

  • 靈活性:通過機(jī)密管理器,可以輕松地在不同環(huán)境中管理不同的敏感數(shù)據(jù),如開發(fā)、測(cè)試和生產(chǎn)環(huán)境,同時(shí)確保每個(gè)環(huán)境中的數(shù)據(jù)安全性。

  • 遵循最佳實(shí)踐:使用機(jī)密管理器有助于遵循最佳實(shí)踐,如將敏感數(shù)據(jù)與應(yīng)用程序代碼分離、避免硬編碼密碼等敏感信息,提高應(yīng)用程序的安全性和可維護(hù)性。

如何啟用機(jī)密存儲(chǔ)

有兩種方案第一種是使用CLI第二種是使用Visual Studio

我們創(chuàng)建一個(gè)新的WebApi 項(xiàng)目dotNetParadise.UserSecret

使用CLI

機(jī)密管理器工具包含一個(gè) init 命令 用來啟用機(jī)密存儲(chǔ),在項(xiàng)目所在的目錄,在我的示例中就是Api項(xiàng)目dotNetParadise.UserSecret的所在目錄執(zhí)行一下命令:

dotnet user-secrets init

通過輸出我們可以看到在我們項(xiàng)目的CSPROJ文件生成了一個(gè)UserSecretsId 元素添加到項(xiàng)目文件的 PropertyGroup 中,內(nèi)部文本是任意的,但對(duì)于項(xiàng)目來說是唯一的。

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <UserSecretsId>c3cda712-dc63-439b-b6af-9c4d6060fde2</UserSecretsId>
  </PropertyGroup>

設(shè)置機(jī)密

使用 dotnet user-secrets set 命令來存儲(chǔ)機(jī)密數(shù)據(jù)。

在項(xiàng)目文件夾目錄中執(zhí)行此命令

dotnet user-secrets set "Movies:ServiceApiKey" "12345"

在這個(gè)示例中,使用 dotnet user-secrets set 命令設(shè)置了一個(gè)名為 "Movies:ServiceApiKey" 的應(yīng)用機(jī)密,其值為 "12345"。冒號(hào)表示 "Movies" 是具有 "ServiceApiKey" 屬性的對(duì)象文字。

我們?cè)O(shè)置好的機(jī)密數(shù)據(jù)存到了哪里?

Windows系統(tǒng)中

%APPDATA%\Microsoft\UserSecrets\<user_secrets_id>\secrets.json

比如我剛才添加的就在機(jī)密存儲(chǔ)位置:

%APPDATA%\Microsoft\UserSecrets\c3cda712-dc63-439b-b6af-9c4d6060fde2\secrets.json

看一下里面的內(nèi)容

{
  "Movies:ServiceApiKey": "12345"}

也可以通過單擊該項(xiàng)目(項(xiàng)目名稱),然后從上下文菜單中選擇“管理用戶機(jī)密”設(shè)置,在VS編輯器查看secrets.json機(jī)密數(shù)據(jù)。

--project 屬性

除了在項(xiàng)目文件目錄中執(zhí)行dotnet user-secrets set命令設(shè)置機(jī)密之外,還可以在通過 --project 選項(xiàng)用于指定項(xiàng)目文件所在的文件系統(tǒng)路徑,以便在其他目錄中使用User Secrets機(jī)密管理器工具,這種用法允許從任意目錄設(shè)置應(yīng)用機(jī)密,而不僅限于項(xiàng)目文件所在的當(dāng)前目錄

dotnet user-secrets set "Movies:ServiceApiKey" "12345" --project "C:\apps\WebApp1\src\WebApp1"

機(jī)密管理器工具不會(huì)加密存儲(chǔ)的機(jī)密,不得被視為受信任的存儲(chǔ),它僅用于開發(fā),密鑰和值存儲(chǔ)在用戶配置文件目錄中的 JSON 配置文件中。

使用Visual Studio

當(dāng)在 Visual Studio 中進(jìn)行敏感數(shù)據(jù)管理時(shí),可以按照以下步驟操作:

  • 在解決方案資源管理器中右鍵 單擊該項(xiàng)目(項(xiàng)目名稱),然后從上下文菜單中選擇“管理用戶機(jī)密”。

  • Visual Studio 將自動(dòng)為該項(xiàng)目添加一個(gè) UserSecretsId 元素,其中填充有一個(gè)唯一的 GUID

設(shè)置完之后在 VS 的編輯界面就會(huì)打開一個(gè)secrets.json文件

{}

這里面是一個(gè)空的 json 串,可以手動(dòng)設(shè)置機(jī)密鍵值對(duì)象,也可以通過dotnet user-secrets set來設(shè)置機(jī)密數(shù)據(jù)

批量設(shè)置機(jī)密

可以通過一個(gè)json文件來批量設(shè)置機(jī)密

type .\input.json | dotnet user-secrets set

讀取機(jī)密

Asp.Net Core 中我們?cè)陧?xiàng)目中讀取配置如appSetting.json或者環(huán)境變量的參數(shù)都是通過IConfiguration對(duì)象來操作,機(jī)密的讀取和Asp.Net Core的配置都是一樣的我們來實(shí)戰(zhàn)一下

var apiKey = builder.Configuration["Movies:ServiceApiKey"];
Console.WriteLine(apiKey);

可以看到機(jī)密信息已經(jīng)正常讀到。

配置的優(yōu)先級(jí)

那么如果 user-secretsappSetting.json或者還有其他的配置源設(shè)置相同的數(shù)據(jù),那個(gè)優(yōu)先級(jí)高呢?

根據(jù)Asp.Net Core 配置介紹

WebApplication.CreateBuilder 使用預(yù)配置的默認(rèn)值初始化 WebApplicationBuilder 類的新實(shí)例。 經(jīng)過初始化的 WebApplicationBuilder (builder) 按照以下順序?yàn)閼?yīng)用提供默認(rèn)配置(從最高優(yōu)先級(jí)到最低優(yōu)先級(jí)):

  • 使用命令行配置提供程序通過命令行參數(shù)提供。

  • 使用非前綴環(huán)境變量配置提供程序通過非前綴環(huán)境變量提供。

  • 應(yīng)用在 Development 環(huán)境中運(yùn)行時(shí)的用戶機(jī)密。

  • 使用 JSON 配置提供程序通過 appsettings.{Environment}.json 提供。 例如,appsettings.Production.json 和 appsettings.Development.json

  • 使用 JSON 配置提供程序通過 appsettings.json 提供。

可以看出如果用戶機(jī)密比默認(rèn)的 appsettings.json 優(yōu)先級(jí)要高。

對(duì)應(yīng)機(jī)密的綁定成POCO對(duì)象和 Asp.Net Core 使用配置一樣可以用IConfiguration提供的各種擴(kuò)展如Get,Bind等來實(shí)現(xiàn),此處不過多介紹

列出機(jī)密

從所在項(xiàng)目目錄中運(yùn)行

dotnet user-secrets list

輸出:

Movies:ServiceApiKey = 12345

刪除單個(gè)機(jī)密

dotnet user-secrets remove Movies:ServiceApiKey

使用 dotnet user-secrets remove 命令來刪除 ASP.NET Core 項(xiàng)目中的單個(gè)機(jī)密。在這個(gè)示例中,執(zhí)行命令 dotnet user-secrets remove Movies:ServiceApiKey 將刪除名為 "Movies:ServiceApiKey" 的機(jī)密信息。

通過這種方式,你可以方便地管理和更新項(xiàng)目中的機(jī)密數(shù)據(jù),確保不再需要的敏感信息不再存儲(chǔ)在用戶機(jī)密存儲(chǔ)中。

刪除所有機(jī)密

dotnet user-secrets clear

dotnet user-secrets clear 用于清除 ASP.NET Core 項(xiàng)目中存儲(chǔ)的所有用戶機(jī)密。執(zhí)行這個(gè)命令將刪除用戶機(jī)密存儲(chǔ)中的所有機(jī)密信息,使存儲(chǔ)中不再包含任何敏感數(shù)據(jù)。

使用 dotnet user-secrets clear 命令是一種快速清除整個(gè)用戶機(jī)密存儲(chǔ)中數(shù)據(jù)的方式,適用于需要重置或清除所有敏感信息的情況。請(qǐng)謹(jǐn)慎使用此命令,確保在執(zhí)行之前備份重要的機(jī)密數(shù)據(jù)。

最后

面向非Web的環(huán)境,可以參考下方官網(wǎng)的實(shí)現(xiàn),本文注重講解了通過user-secrets來管理本地的機(jī)密,線上環(huán)境的機(jī)密配置可以ASP.NET Core 中的 Azure Key Vault 配置提供程序,或者大家如果在k8s的環(huán)境中可以通過Secret或者ConfigMap,亦或是配置中心等方式來讓自己的機(jī)密信息避免在源碼中出現(xiàn)。

本文來自博客園,作者:董瑞鵬,轉(zhuǎn)載請(qǐng)注明原文鏈接:https://www.cnblogs.com/ruipeng/p/18154605


該文章在 2024/5/27 9:00:49 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved