2012-07-12 69 views
2

當你們知道在exe文件中的硬編碼編碼可以通過一些軟件(例如代碼反射器)很容易地看到,我想知道我該如何隱藏我的連接字符串有信息的SQL Server用戶名和密碼連接到Windows窗體應用程序中的數據庫,通過任何代碼反射器查看,以便其他任何人除我之外,未經我的許可,可能永遠無法使用我的應用程序。如何隱藏Windows窗體應用程序中的連接字符串

+1

怎麼樣在一個dll – 2012-07-12 21:29:26

+1

封裝你的CS就沒有。在連接字符串中使用Integrated Security = SSPI,以便使用安全的Windows身份驗證。這是你需要留給LAN管理員的東西,不要涉及到你的客戶的安全策略。 – 2012-07-13 13:11:00

+0

@imrankhan你的意思是混淆嗎?甚至更好http://www.remotesoft.com/salamander/protector.html – 2012-07-14 01:45:19

回答

3

正如所評論的那樣,您最好使用集成安全性,但是如果您使用混合模式身份驗證來定位SQL Server,則可以使用Data Protection API來加密app.config中的連接字符串。下面是關於這一主題的大文章:

保護應用程序的祕密,如數據庫連接字符串 和密碼,需要大量的相關 因素的慎重考慮,如敏感數據是,誰可以訪問它如何平衡安全性,性能和可維護性等等。本文解釋了數據保護的基本原理,並且比較了可用於保護 應用程序設置的各種技術。作者討論了要避免的問題,例如 在源代碼中隱藏密鑰以及使用本地安全機構。在 另外,他提出了一些有效的解決方案,如Data 保護API。

Safeguard Database Connection Strings and Other Sensitive Settings in Your Code

How To: Use DPAPI to Encrypt and Decrypt Data (C#/VB.NET)

+1

由你提供的第二個鏈接似乎是我可以接受的解決方案,但如果某些機構可以通過代碼執行程序將cs內的cs文件加密或解密,他可以不用c編碼嗎? – kashif 2012-07-14 22:14:21

+0

如果您希望人們對您的exe和dll進行反向工程,那麼您應該對代碼進行混淆處理,並提出一系列策略以使其成爲一種挑戰:http://stackoverflow.com/a/2611489/495455 DPAPI具有[兩種模式](http://msdn.microsoft.com/en-us/library/ff649248.aspx),[機器和用戶存儲](http://www.devproconnections.com/article/security-development/dpapi吸留選項)。用機器密鑰加密的「祕密」可以通過任何可以訪問機器密鑰的進程來解密。用用戶密鑰加密的'祕密'可以由同一用戶啓動的任何進程解密。 – 2012-07-15 01:46:46

+0

七月份我問你這個問題。現在我想知道關於同一個問題的一些事情。如果我使用UserKey加密一些數據,然後想在另一臺機器上解密它,我將如何在另一臺機器上創建具有相同配置文件的相同用戶 – kashif 2012-10-25 13:17:23

0

爲什麼您的連接字符串(或至少是用戶名和密碼位)甚至在您的應用程序中。

如果你不能使用集成,那麼你應該提供一個登錄對話框並且每次都輸入它。

+0

,這將會更加unusefull我事情,如果它發生用戶將知道密碼 – 2012-07-12 21:38:25

+1

如果你正在使用sql server查找應用程序角色並設置正確。您當前的安全模型存在缺陷在您的代碼中保留用戶名和密碼,有人可以對其進行破解。 – 2012-07-13 12:51:04

相關問題