您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何保護 .NET Core 項目的敏感信息,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
我們的項目中幾乎都會有配置文件,里面可能會存儲一些敏感信息,比如數據庫連接字符串、第三方API的AppKey和SecretKey等。
對于開源項目,這些敏感信息肯定不能隨著源代碼一起提交到托管平臺。
對于網站應用大多都是要部署到有公開IP的服務器上的,存有敏感信息的文件放在Web目錄下也不安全。
較好的辦法是把敏感信息文件存在項目以外的地方。
在.NET Core中,我們可以使用Secret Manager工具來管理敏感信息,這個工具可以將敏感信息保存在一個secrets.json文件中,它不在項目文件夾下,而是存放在另外的地方。對于三種操作系統,它的位置是:
Windows: %APPDATA%/Microsoft/UserSecrets/<UserSecretsId>/secrets.json
Linux : ~/.microsoft/usersecrets/<UserSecretsId>/secrets.json
Mac : ~/.microsoft/usersecrets/<UserSecretsId>/secrets.json
一個.NET Core應用對應一個唯一的UserSecretsId,一般是一個GUID。
這也限制了每個開發者都必須有自己的UserSecrets文件夾。雖然有些麻煩,但這也有個好處。就是每個開發者可以使用不同于其它開發者的敏感數據進行開發。比如有些公司的數據庫為每個開發者創建了獨立的數據庫訪問賬號。
在VS中可以很方便地操作secrets.json。右擊項目,選擇[Manage User Secrets],如圖:
編輯打開的secrets.json文件,把敏感信息填入其中,如:
{
"ConnectionString": "server=localhost;database=testdb;uid=root;pwd=123456;"
}
保存后,.csproj文件中會自動生成一個UserSecretsId:
如果不用VS,也可以在此處手動添加UserSecretsId,然后在項目目錄下通過命令來添加或刪除配置項,例如:
dotnet user-secrets set "Foo:ApiKey" "123456"
dotnet user-secrets remove "Foo:ApiKey"
如果secrets.json和appsettings.json有相同的配置項,程序會優先讀取前者的值。
對于secrets.json的所有配置項,最好也在appsettings.json保留相應的占位,比如:
{
"ConnectionString": "<your connection string here>",
// 其它配置
}
這樣appsettings.json中的占位可以告訴其它開發者有這樣一個配置。這對于開源項目十分有用。
享。
看完上述內容,你們對如何保護 .NET Core 項目的敏感信息有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。