前言

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

以往我們常常將數(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)上文中的最佳實踐,再次強調(diào)一次,Secret Manager只適用于開發(fā)環(huán)境中。

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

Windows

%APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json

Linux

~/.microsoft/usersecrets/<userSecretsId>/secrets.json

Mac

~/.microsoft/usersecrets/<userSecretsId>/secrets.json

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

安裝、使用

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

Microsoft.Extensions.SecretManager.Tools
        		

網(wǎng)友評論