2014-05-21 112 views
1

我非常有信心,這個問題的答案是根本沒有,但我想包括我的所有基地。任何方式安全地存儲密碼的應用程序

在.net的上下文中,有沒有一種方法可以編寫應用程序,而不是Web應用程序或服務,但應用程序可以訪問服務而不需要最終用戶直接訪問相同的服務?

或者,更具體地說,是否有任何方法來存儲密碼,某種形式的憑證在應用程序中或應用程序和文件中(用戶也可以訪問這兩個憑證),以便我可以自信地聲明一個用戶不能用來提取憑證並獲得對該服務的訪問權限?

我知道,我能做出這樣很困難,但我是給這種情況下,並設置了,我不能讓這些憑證的檢索和該密碼或多或少是不可能的印象。有什麼辦法可以做到這一點,我可以向感興趣的各方保證它會安全嗎?

回答

3

答案是:不,這是不可能讓它這樣用戶不能得到您的服務密碼,但你可以採取措施,使其他們獲得密碼。

一些簡單的事情可以做,

  • 存儲用戶硬盤上的加密密碼(也包括內遵守EXE和DLL文件)的唯一有它存儲在一個SecureString而在未加密的形式。
  • 使用代碼模糊處理,以使其難以扭轉工程師代碼(您將需要從第一個建議隱藏解密功能)。
  • 繼承人有人經歷過這種「防禦性編碼」擔任顧問過目你的程序,並使其更難進行逆向工程。
  • 寫的代理服務,是完全在你的控制,而不是託管在任何設備終端用戶已經到物理訪問讓你想保護的第三方服務的調用,一個最終用戶可以看到登錄的代理但無法看到代理背後的登錄信息。

所有這些事情耗費精力/錢,設計安全措施,這樣當你要問你自己一個簡單的問題「多少,如果一個人克服了我到位和股票的保護將它花了我它與世界嗎?「。

一旦你有了答案,你花費了大量的錢/努力來保護你的產品,因爲如果你花費比這更多,那麼讓信息泄露會更便宜(一個關於軟件開發和安全性的令人傷心的事實)

+0

謝謝,良好的信息。我認爲我們將會陷入這個特定項目的「不值得的額外開發/努力」類別,但我希望涵蓋我的基礎。我認爲最終我們會將這項服務的訪問權限添加到特定組的角色中,並以此方式實施。它們可以接受,但我們不想將它分發給更廣泛的組織。 – MattB

相關問題