日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.NETCore程序中使用UserSecrets存儲敏感數(shù)據(jù)-創(chuàng)新互聯(lián)

前言

在開發(fā)中經(jīng)常會用到一些敏感數(shù)據(jù)比如AppSecret或數(shù)據(jù)庫連接字符串無論是硬編碼還是寫在配置文件中最終都要push到svn或git上。對于開源項目這些敏感數(shù)據(jù)就無隱私可言了對于私有項目一旦源代碼管理服務(wù)器被黑這些敏感數(shù)據(jù)也將暴露無遺。所以最佳實踐就是不要將敏感數(shù)據(jù)寫到源代碼中。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、澄城網(wǎng)站維護(hù)、網(wǎng)站推廣。

以往我們常常將數(shù)據(jù)庫連接字符串寫在web.config中.NET Core中寫在appsettings.json中開發(fā)環(huán)境下如果一個開發(fā)者修改了連接字符串為了不影響其他開發(fā)者每次提交代碼的時候就應(yīng)該忽略該配置文件如果還添加了其他配置必須提交的話要么先撤銷連接字符串的修改再提交要么直接提交會影響其他開發(fā)人員。很多時候我們就是直接提交了大不了其他開發(fā)者pull下來代碼再修改一下。但是最佳實踐就是不要寫在配置文件中。

注意上面提到的問題都是在開發(fā)環(huán)境下。

Secret Manager

.NET Core中為我們提供了叫Secret Manager的工具可以實現(xiàn)上文中的最佳實踐再次強(qiáng)調(diào)一次Secret Manager只適用于開發(fā)環(huán)境中。

下面說一下Secret Manager它幫我們抽象了一些細(xì)節(jié)比如數(shù)據(jù)存儲在哪以及如何存儲的問題。簡單來說它幫助我們將數(shù)據(jù)以明文的形式存在了本地的一個json文件中。系統(tǒng)不同存儲的位置也不一樣。

Windows

%APPDATA%\microsoft\UserSecrets\\secrets.json

Linux

~/.microsoft/usersecrets//secrets.json

Mac

~/.microsoft/usersecrets//secrets.json

userSecretsId是在.csproj文件中指定的會在下文講到。

安裝、使用

配置User Secrets及訪問需要用到兩個包分別為

Microsoft.Extensions.SecretManager.Tools
Microsoft.Extensions.Configuration.UserSecrets

簡單說一下兩者的作用第一個是工具包可以使用dotnet user-secrets命令將數(shù)據(jù)存儲到j(luò)son文件中第二個包可以通過.NET Core的配置系統(tǒng)訪問存儲在json文件中的數(shù)據(jù)。

dotnet user-secrets -h

這個命令可以查看Secret Manager的用法。

它有4個命令

命令描述語法
clear刪除程序中所有的secretsdotnet user-secrets clear
list列舉程序中所有的secretsdotnet user-secrets list
remove刪除指定的secretdotnet user-secrets remove NameOfSecret
set設(shè)置secretdotnet user-secrets set NameOfSecret ValueOfSecret

以Mac上舉例上面的命令都是操作~/.microsoft/usersecrets/\/secrets.json這個文件userSecretsId指定了是哪個項目的secrets。

userSecretsId在.csproj文件中指定。


  userSecretsId的值

在mac或linux上userSecretsId的值可以通過uuidgen生成。

在Microsoft.Extensions.Configuration.UserSecrets包擴(kuò)展了ConfigurationBuilder包含一個AddUserSecrets的擴(kuò)展方法。如果想通過Configuration訪問User Secrets只需要在調(diào)用build.AddUserSecrets()即可。

if (env.IsDevelopment())
{
    // 搜索包含類型Startup的程序集添加User Secrets的配置源Startup也可以換成其他程序集中的其他類型
    builder.AddUserSecrets();
}

或干脆直接指定userSecretsId

if(env.IsDevelopment())
{
    builder.AddUserSecrets("UserSecretsId");
}

然后就可以通過Configuration["NameOfSecret"]訪問到User Secret了。

項目實踐

下面通過一個控制臺程序演示。

  1. mkdir user-secrets && cd user-secrets # 新建一個目錄

  2. dotnet new console # 創(chuàng)建一個控制臺應(yīng)用

  3. dotnet restore # 還原包

  4. dotnet add package Microsoft.Extensions.Configuration.UserSecrets -v 1.1.2 # 安裝包

  5. code . # 使用Visual Studio Code打開

  6. 在user-secrets.csproj中添加UserSecretsId

    
    3BF2D901-89B9-437D-8856-CCA63D4606F7
    

    以及SecretManager工具包

    
    
    
  7. dotnet user-secrets set AppKey 12345 # 添加名為AppKey的Secret

  8. 為了判斷是在開發(fā)環(huán)境中需要添加環(huán)境變量因此需要再安裝一個包
    dotnet add package Microsoft.Extensions.Configuration.EnvironmentVariables -v 1.1.2

  9. 打開Program.cs加入以下代碼

    class Program
    {
        public static IConfigurationRoot Configuration { get; set; }
        static void Main(string[] args)
        {
             var builder = new ConfigurationBuilder()
            .AddEnvironmentVariables();
    
            var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
            if (environment == "Development")
            {
                builder.AddUserSecrets();
            }
            Configuration = builder.Build();
    
            Console.WriteLine(Configuration["AppKey"]);
        }
    }
  10. 運(yùn)行
    ASPNETCORE_ENVIRONMENT=Development dotnet run

    export ASPNETCORE_ENVIRONMENT=Development
    dotnet run

ASP.NET Core類似這里就不再演示了。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


網(wǎng)站標(biāo)題:.NETCore程序中使用UserSecrets存儲敏感數(shù)據(jù)-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://www.dlmjj.cn/article/ddeocj.html