2009-09-13 53 views
2

我的.NET WinForms應用程序連接到ftp服務器並下載文件。爲此,需要連接密碼。密碼應存儲在配置文件中,但應加密。唯一能解決這個問題的方案包括保護整個配置部分(這對我來說沒有用,因爲在appSettings部分中的密碼是有的,其他數據需要手動更改),或者使用DPAPI(以及它因爲在我的電腦上加密的密碼不能在其他密碼上解密,所以這是不行的。)還有其他技術嗎?在配置問題中保護密碼

+0

我更新了我的答案。 –

+0

您可以創建自己的部分,但您必須定義一個處理程序來解析它們。例如,請參閱http://www.codeproject.com/KB/aspnet/ConfigSections.aspx –

+0

ok,但是隻能在我的機器上解密在我的機器os上加密的部分!這是問題 – agnieszka

回答

2

您可以使用應用程序內部的對稱密碼(即AES)手動加密和解密,並將加密密碼存儲在配置文件中。

這個問題當然是因爲你必須存儲加密和解密你的應用程序中的密碼的對稱密鑰,所以任何知道crypto和.net的人都能夠反映和逆向工程二進制相當容易 - 並獲得密鑰和FTP密碼。

您可能會混淆您的二進制文件,使其更加困難。

當然,無論如何,FTP用戶名和密碼都以明文形式發送(除非您使用的是ftps :),所以任何正在聆聽您的應用的用戶都會很快找到用戶名和密碼。

我想這取決於你想在你的應用程序中使用這個用戶名和密碼的安全性?這種解決方案可以防止那些盯着眼睛的人抓住它,但不能阻止那些被確定的人。

+0

這個安全性已經足夠了 - 這是一個簡單的公司內部應用程序,並且不需要非常高的安全性,只是不想在配置文件 – agnieszka

3

您可以加密.config文件的特定部分 - 例如,<connectionstrings>部分。這可以保存FTP密碼(雖然它不是一個真正的連接字符串),並且您可以不加密地保留<appSettings>部分。

更新:如果您也不能使用<connectionstrings>,您可以創建自己的自定義部分並加密。

大多數資源告訴您使用ASP.NET aspnet_regiis工具。 Here是一篇討論加密C#Windows應用程序部分的文章,其中使用ASP.NET不是一種選擇。

進一步更新:在評論,你說

這個安全性是不夠的 - 它是一個 簡單內,公司的應用程序和有 不需要很高的安全性,只是 不要」不想讓密碼躺在 出現在配置文件中明文

所以那麼也許this solution會爲你工作。

+0

+1中將密碼設置爲純文本。正是我想要建議的! –

+0

仍然 - 這是整個部分。如果我需要存儲可以手動更改的其他連接字符串,該怎麼辦? – agnieszka

+0

是的。或者有一個單獨的密碼配置文件 - 然後你可以做任何你想要的文件 - 加密它,將其隱藏在其他地方,甚至可能/可行更改文件的安全權限。取決於你的應用程序是否需要分發。但最終,這些都是以這種或那種方式容易受到攻擊的,所以我建議看一下不同的協議(可能是SFTP),在服務器上通過IP過濾連接,或者尋找一種不同的方法來查看數據如何從服務器。 –