2013-03-20 112 views
2

我很好奇如果有任何關於在源代碼中存儲敏感信息的建議。爲了讓我從一開始就清楚,我是而不是談論用戶密碼,信用卡號碼等等;我正在談論API訪問密鑰,客戶機密和其他與應用程序用戶沒有直接關係的數據,而是應用程序對各種組件或第三方服務進行身份驗證(還可以考慮數據庫連接字符串web.config文件)。在源代碼中存儲敏感信息的最佳實踐

我在尋找的是一種隱藏,如果可能的話,明文出現這種敏感信息(通常是字符串)最好在源文件中(避免以某種方式硬編碼)和輸出二進制文件。對於我知道的二進制文件,有一些混淆的「解決方案」;但對於消息來源,我想不出一個簡單的問題。理想情況下,該解決方案應該儘可能地對源代碼管理友好,允許授權開發人員只需簽出代碼並無需額外步驟即可構建代碼。

如果您對此有任何建議,我會更願意聽到他們。

+0

有一個,國際海事組織:不這樣做:)我不知道我完全理解,但如果您的敏感信息結束在二進制文件和二進制文件部署到客戶機,然後它可以提取。 – 2013-03-20 10:01:31

+0

@ZdeslavVojkovic也許我應該提到,在我的情況下,特定的場景只適用於服務器端代碼,所以它是一個相對(但不是完全)安全的環境。 – 2013-03-20 10:13:28

+0

好的,那麼它是有道理的。但是,我不明白你爲什麼要將它存儲在源代碼中呢? – 2013-03-20 10:14:45

回答

0

的解決方案,我最終選擇了將所有一的web.config文件裏面的敏感字符串(或的app.config),然後加密的敏感部分它。然後我讓操作系統和ASP.NET運行時來處理加密/解密。不完美(畢竟你需要讓原始app/web.config文件保存明文數據 - 但至少它不一定要在生產機器上),但是非常方便。

1

您可以使用xml加密您的密鑰&。

應用程序可以解密它&使用它。

參見:

Encrypt/Decrypt string in .NET

此外,您還可以使用Encoding這至少比有純文本更好。

參見:

Encode and Decode

+1

應用程序從哪裏獲取解密密鑰的密碼? – 2013-03-20 10:01:58

+0

很好的建議,KPL,謝謝,但正如Zdeslav所說的那樣,必須有某種「主密碼」才能工作 – 2013-03-20 10:11:25