前言
在開(kāi)發(fā)中經(jīng)常會(huì)用到一些敏感數(shù)據(jù),比如AppSecret或數(shù)據(jù)庫(kù)連接字符串,無(wú)論是硬編碼還是寫在配置文件中,最終都要push到svn或git上。對(duì)于開(kāi)源項(xiàng)目,這些敏感數(shù)據(jù)就無(wú)隱私可言了,對(duì)于私有項(xiàng)目,一旦源代碼管理服務(wù)器被黑,這些敏感數(shù)據(jù)也將暴露無(wú)遺。所以,最佳實(shí)踐就是不要將敏感數(shù)據(jù)寫到源代碼中。
以往我們常常將數(shù)據(jù)庫(kù)連接字符串寫在web.config中,.NET Core中寫在appsettings.json中,開(kāi)發(fā)環(huán)境下如果一個(gè)開(kāi)發(fā)者修改了連接字符串,為了不影響其他開(kāi)發(fā)者,每次提交代碼的時(shí)候就應(yīng)該忽略該配置文件,如果還添加了其他配置,必須提交的話,要么先撤銷連接字符串的修改再提交,要么直接提交會(huì)影響其他開(kāi)發(fā)人員。很多時(shí)候,我們就是直接提交了,大不了其他開(kāi)發(fā)者pull下來(lái)代碼再修改一下。但是,最佳實(shí)踐就是不要寫在配置文件中。
注意,上面提到的問(wèn)題都是在開(kāi)發(fā)環(huán)境下。
Secret Manager
.NET Core中為我們提供了叫Secret Manager的工具,可以實(shí)現(xiàn)上文中的最佳實(shí)踐,再次強(qiáng)調(diào)一次,Secret Manager只適用于開(kāi)發(fā)環(huán)境中。
下面說(shuō)一下Secret Manager,它幫我們抽象了一些細(xì)節(jié),比如數(shù)據(jù)存儲(chǔ)在哪以及如何存儲(chǔ)的問(wèn)題。簡(jiǎn)單來(lái)說(shuō)它幫助我們將數(shù)據(jù)以明文的形式存在了本地的一個(gè)json文件中。系統(tǒng)不同存儲(chǔ)的位置也不一樣。
Windows
%APPDATA%\microsoft\UserSecrets\<userSecretsId>\secrets.json
Linux
~/.microsoft/usersecrets/<userSecretsId>/secrets.json
Mac
~/.microsoft/usersecrets/<userSecretsId>/secrets.json
userSecretsId是在.csproj文件中指定的,會(huì)在下文講到。
安裝、使用
配置User Secrets及訪問(wèn)需要用到兩個(gè)包,分別為
Microsoft.Extensions.SecretManager.Tools
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26