2016-04-25 204 views
0

我正在通過SSL調用SOAP Web服務的庫中編寫一個類。 SOAP服務要求在每次調用時傳入用戶名和密碼。這個庫將被公共網站的服務器代碼引用。我不確定存儲密碼的標準/最佳方式是什麼。調用每次調用都需要用戶名和密碼的SOAP服務。我應該如何存儲密碼?

我看到的選項...

  • 硬編碼密碼在類
  • 存儲在數據庫中
  • 存儲在配置文件中的密碼口令字符串

這些都不安全,易於更新。

回答

1

我不是一名安全專家,我也沒有做過任何.NET開發(所以信息可能已過時),但這裏有一些想法或建議可能對您有所幫助。

硬編碼密碼在類

不要做一個字符串。你的源代碼是在版本控制(TFS,Git,無論)中,所以將是用戶名/密碼,每個開發人員從你簽入代碼到......永遠都能看到。爲了確保對用戶名/密碼的訪問,您現在被迫保護對源存儲庫的訪問。我想所有的開發者都需要訪問源代碼,但並不需要知道用戶名/密碼。

存儲在數據庫中的密碼,根據您的個人資料

我假設你使用SQL Server? See what encryption options are available to SQL server如果你想要走這條路。也許其中一個就足夠你的用例。

存儲在配置文件中

再次輸入密碼,這將有可能最終在源代碼控制,但它不是那麼糟糕,因爲第一個選項,因爲你可以encrypt parts of the config文件(我假設C#基於你的個人資料)。

如果您可以控制SOAP服務,也許可以將其從需要用戶名/密碼更改爲使用相互身份驗證。您在客戶機上安裝證書(拒絕導出密鑰),並僅允許從安裝了證書的客戶機(也可以將其安裝在開發人員的計算機上)調用Web服務。

解決方案真的取決於保護這個用戶名/密碼的重要性,即您希望的安全級別(您沒有在您的問題中指定)。

如果它不是非常重要,可以將它放在數據庫中作爲您的配置文件2)或從配置中引用的外部文件(未在源代碼管理中提交),並將該文件放在服務器或開發機器上。然後,您基本上可以控制對機器的訪問(假設所有開發人員在從鍵盤起牀時鎖定其PC)。

如果保護這個真的非常重要,你可以問https://security.stackexchange.com/更好的建議比我可以給你:)。

相關問題