我們正在開發ASP.NET MVC 5應用程序。我們聘請了一些遠程開發人員來幫助我們完成這個項目。保護web.config設置
web.config文件包含我們不想與這些遠程開發人員共享的連接字符串和應用程序設置。爲了處理我們的應用程序,這些開發人員可以遠程訪問我們控制的開發桌面。
什麼是固定在web.config中的敏感信息的最佳實踐,從而使開發人員仍然可以運行和調試應用程序,但不能讀取web.config中的敏感信息?
我們正在開發ASP.NET MVC 5應用程序。我們聘請了一些遠程開發人員來幫助我們完成這個項目。保護web.config設置
web.config文件包含我們不想與這些遠程開發人員共享的連接字符串和應用程序設置。爲了處理我們的應用程序,這些開發人員可以遠程訪問我們控制的開發桌面。
什麼是固定在web.config中的敏感信息的最佳實踐,從而使開發人員仍然可以運行和調試應用程序,但不能讀取web.config中的敏感信息?
在開發環境中加密web.config
是沒有意義的。真正將開發人員的信息隱藏起來的唯一方法不是首先將其提供給他們。
.config
files來實現此目的,以便它們不會被簽入源代碼管理。 提示:Ignore the file with the actual passwords並添加另一個具有相同的名稱和擴展名,如.config.example
即是檢查中給予的開發者說明如何設置文件在本地系統(這是一個有益的提醒,無論誰從源代碼控制庫的克隆中設置系統)。真的沒有理由讓開發者甚至有機會看到敏感的生產數據,例如密碼和私鑰。
您可以存儲配置變量中的環境變量,並在運行時他們讀入的應用程序 - 這是更好,因爲每個開發人員和環境都可以有自己的configs將從未與他人發生衝突。
因此,如果我將連接密碼存儲在環境變量中,會阻止不受信任的開發人員看到該變量?就像在Powershell中一樣,它的get-childitem env: – user1044169
這個(以及其他任何事情)都不會真正起作用,開發人員可以調試,放置斷點,觀看等,他們可以完全控制內存空間。 – Fredou
所以你共享一臺機器? – iwayneo
你如何部署你的應用程序?
如果您使用的工具,如Octopus Deploy - 只有你的團隊陸上訪問 - 你可以用它來存儲任何敏感的設置。這些將在部署期間插入到您的配置文件中。
在章魚部署這些公知爲configuration variables。
這假定敏感設置是針對環境其他而不是開發人員自己使用的(例如Production和UAT)。
像Ingenioushax
建議,web.config中的部分使用ASPNET_REGIIS加密的標準方式。 Here is a tutorial。
我最近面對的東西與此非常相似。如果您的應用程序位於遠程用戶的中央服務器上,則可以使用aspnet_regiis使用計算機級別密鑰進行web.config加密。 [MSDN aspnet_regiis](https://msdn.microsoft.com/en-us/library/zhhddkxy.aspx)。 但值得注意的是,您仍然可以通過使用WebConfigurationManager調用這些值來獲取這些值。 – Ingenioushax
謝謝,但我想如果我們處理類似保護API密鑰的東西,那麼仍然無法保護該密鑰,因爲API期望它以「清晰」形式傳遞,所以開發人員只需將在正確的地方看到鑰匙的斷點... – user1044169
如果你不相信開發者,你爲什麼聘用他們? –