2011-07-31 61 views
2

我想獲取並設置爲用戶隱藏的一些應用程序設置。在這種情況下,這些是由應用程序改變的兩個令牌和兩個令牌。但是,他們仍然都是應用程序用戶的祕密。對用戶隱藏的C#設置

我在MSDN和這個論壇上找到了兩種方法。

  • 使用.config文件。 - >這聽起來不錯,我可以改變它的一些值。但發佈後我仍然看到一個純文本文件。
  • 使用項目屬性中的設置。 - >它應該是?畢竟,我讀到了有關這個不太安全的警告。

很多網站描述了一個Web服務器解決方案,而我只是想要一個桌面解決方案。

Btw。這不是一個商業產品,我正在做一個愛好項目,以從C#.net中學到更多東西。

+0

加密「隱藏」設置,但仍然保存到配置文件? –

+0

可能是加密方式,但仍然幾乎所有的東西都可以被反向設計。 –

+0

'設置'被放置在配置中。你在這裏只有1個選項。 –

回答

2

如果應用程序需要更改這些文件,則需要將這些文件保留在應用程序外部,以便在下次啓動應用程序時加載新設置。

爲此,您始終可以創建配置(或設置)文件並將其隱藏在程序集的System.IO.IsolatedStorage文件中。這仍然可以由用戶編輯,但它有點難以找到 - 此外,這將轉移到漫遊配置文件,以便跨設備使用這些設置。

簡單的東西來幫助你開始:

IsolatedStorage.IsolatedStorageFile storage = IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly(); 

string subdirectory = "SomeDirectory"; 
storage.CreateFile(System.IO.Path.Combine(subdirectory, "settings.config")); 
+1

MSDN將此內容寫入IsolatedStorage 「不要使用獨立存儲來存儲高價值祕密,例如未加密的密鑰或密碼,因爲孤立存儲不受高度可信代碼,非託管代碼或計算機可信用戶的保護「。 我有一種感覺,MS不能保證存儲祕密設置的安全方式。 .NET和Java總是存在這樣一個問題,即「反而更容易」,然後像C++那樣進行反編譯。 IsolatedStorage應該是保持這些令牌祕密的最佳方式。 – Joris

1

是否設置的* *存在需要保密的,或只是它的價值?

如果是後者,我建議加密保存到.config文件的值。

+0

然後我必須在某處存儲密碼。 我更希望能夠組裝到用戶無法訪問的代碼中進行配置。 – Joris

+0

無論你把配置放在哪裏,你的用戶都可以反編譯你的dll。告訴我們更多關於你的用例?爲什麼該設置需要「隱藏」?你所要求的基本上是你的程序有權訪問的區域,但是你的程序運行的權限的用戶沒有權限訪問。你能看到這可能是一個問題嗎? –

+0

在這種情況下,它是來自OAuth的消費者口令。但是,這只是這種情況。我想探索C#的可能性。當然,當你擁有工具和技能時,數據被編譯成二進制或庫可逆。我想要的是儘可能讓用戶做到這一點。而現在,我只發現它不是100%安全的,並且當你將數據存儲在本地時是正確的,尤其是對於C#託管的語言。但什麼是99%安全,什麼50%等。我沒有找到MSDN網站不是非常水晶這一點。 .config是否比項目設置更不安全? – Joris