2017-02-28 100 views
1

我知道這可能是一個老問題,並且有關於這個問題的很多討論,但所有的答案都不幫我,因爲有解密方法以及

我想加密app.config文件,所以沒有人可以看到我的stringConnections
我知道改變的app.config到web.config文件和加密

後但再次重命名後使用加密app.config connectionStrings不解密

aspnet_regiis -pef "connectionStrings" <"path"> 

它的Windows應用程序,手段加密的應用的.config將app目錄內
所以,大家誰可以訪問它,這簡直是每個人都可以隨時使用

aspnet_regiis -pdf "connectionStrings" <"path"> <br> 

這樣,我怎麼能保護它在某種程度上,沒有人可以解密解密,並且只有我的應用程序可以使用它

+1

你不能兩面都有。您的應用程序可以解密並使用它*,並且*有可能訪問該目錄的任何人都可以對其進行解密*或*沒有人(包括您的應用程序)可以對其進行解密。您可能可以使用只有您的應用程序知道的密鑰對其進行加密,但訪問該目錄僅會使攻擊者感到不便。只要您承擔實際訪問權限,最多隻能提供邊際保護。 – kettch

+0

如何不使用'app.config'來存儲連接字符串?將它存儲在'app.config'中的一點是允許在不必重新編譯整個應用程序的情況下進行更改,或者只是查看連接字符串是否正確,以防某些操作不按預期工作。如果沒有人能解密它,將它存儲在'app.config'中是沒有意義的,只需修復你的代碼即可。 – Alisson

+0

@Alisson這是一個很好的觀點,但我使用實體模型,默認情況下,它將字符串連接存儲在app.config中。是否有一種方法可以使用實體模型並將連接字符串存儲在其他位置? – Bayar

回答

1

壞消息:您在這裏遇到了麻煩,因爲您選擇的位置可供您的應用程序以及訪問同一位置的所有人和應用程序訪問。這意味着:如果您的連接字符串可由您的應用程序解密,則其他人都可以訪問加密數據。

好消息:我有同樣的問題,並通過更改我的配置數據所在的位置(包括我的連接字符串)來解決它。我將來自web.config的信息移至配置服務中。這樣我的應用程序就可以訪問服務,就像其他應用程序和個人一樣,但只有我的應用程序可以提供正確的身份驗證。

本質上:加密/解密可能不是您需要的解決方案,但授權是另一種選擇:限制訪問。

+0

感謝您的解釋,現在很明顯,不建議在app.config或web.config中使用加密或解密的字符串連接,現在我的問題是可以使用Windoes窗體或WPF的配置服務,因爲我使用的是Windows應用程序和實體模型,因此默認情況下它將字符串連接存儲在app.config中 – Bayar

+0

您使用的技術與它無關,因此可以使用Web服務來存儲連接信息。只有條件是你有權訪問該服務。您的連接字符串不會再存儲在您的app.config中,它將存儲在(通過)您的Web服務中。 –

+0

非常感謝先生,這真的很有幫助,應用程序也會知道更好的天氣有互聯網連接或沒有,所以不需要通過連接到數據庫嘗試互聯網連接! – Bayar