我正在擴展開放源代碼的VoIP軟電話應用程序(用C#/。NET編寫)以滿足我的需求,但不知道如何最好地處理此問題。我想讓應用程序在用戶輸入他的電子郵件地址登錄時連接到數據庫,並執行SQL查詢以使用該電子郵件獲取其帳號並使用帳號進行身份驗證。但是,我認爲包括我的MySQL連接憑據(主機,用戶名,數據庫)是不安全的?我應該怎麼做?在C#應用程序中隱藏MySQL憑證
回答
MySQL可以執行基於Windows的身份驗證(即在域中)嗎?如果是這樣,你可以使用它。否則,您可能想要獲得服務的憑據,或使用加密,但您需要包含加密密鑰,以便任何致力於發現它的人都可以。
您應該將連接字符串放入配置文件,然後加密該文件的該部分。有一個關於如何在這裏做的教程:Protecting Connection Strings and Other Configuration Information。儘管本教程適用於ASP.NET,但同樣的原則也適用於幾乎任何.NET配置文件。
這裏還有一個類似的問題:Encrypting passwords in WinForms app.config, .NET。
確實不安全。
您需要運行在服務器上的軟件,它可以接受所述電子郵件和密碼作爲輸入並連接到您的數據庫(因此連接字符串位於控件中的機器上),檢查它並返回ACCEPTED或DENIED客戶端。在你的情況下,ACCEPTED可能只是你提到的帳號。
如果電子郵件和密碼是通過加密鏈接(公鑰)從客戶端傳輸到服務器應用程序的,則爲獎勵分數。
讓他們在你的裝配結束,您可以編寫您的連接字符串和使用代碼混淆,以保護其免受反彙編
http://woodmann.com/collaborative/tools/index.php/Category:.NET_Deobfuscation_Tools,來自Google的第一個鏈接。 –
有很多方法可以做到這一點,包括混淆等方式使其難以使用在應用程序之外,但不是不可能檢索/使用。
你應該怎麼做?最好的方式(據我所知)是給賬戶提供必要的最低限度的憑證,這樣如果有人擁有用戶名和密碼,他/她就不能做任何惡意的事情。權限可以通過多種方式設置用戶特定的數據,例如視圖,以便用戶只能訪問正確的行。基本上,如果安全性是首要問題,則保守地分配權限,並在必要時爲不同的用戶分配不同的憑證。
我們在設計數據庫應用程序時的經驗法則是始終使用委派和隔離。
什麼隔離意味着我們通過使用服務(即web服務,wcf,.net remoting等)將數據庫交互與最終用戶應用程序隔離開來。這樣,數據庫永遠不會直接暴露給用戶。
什麼樣的代表意味着數據庫訪問總是由知名的受限訪問數據庫用戶(通常是服務運行的用戶)代表最終用戶執行。如果可能的話,數據庫訪問應由網絡認證的用戶執行,而不是通過在連接字符串或其他半安全位置存儲用戶名和密碼。
最後,一個重要的注意事項:您應始終在通過電線發送之前加密最終用戶的登錄名和密碼信息。這是一項額外的工作,但是從安全角度來看它是值得的。
這很有趣。如果我爲這個應用程序創建一個特殊用戶,使用有限權限並在config中加密它的憑據,會怎樣?這不是最好的解決方案,但即使他們發現它,權限也是有限的。 – tmrhmdv
這應該工作。即使我們使用Windows身份驗證,我們也總是加密連接字符串並將它們存儲在註冊表中。 –
您應該在您的服務器上託管一個(php/jsp/asp)腳本,與您的應用程序進行通話。您不應該將代碼存儲在應用程序中,不惜任何代價。
有太多的方法來取出信息。尤其是.NET應用程序它不需要更多的30分鐘:p
- 1. 如何在C#應用程序中安全地隱藏數據庫憑證?
- 2. 如何隱藏http頭中的用戶憑證 - angular2應用程序
- 3. 隱藏/取消隱藏列在Excel在VSTO應用程序C#
- 4. 在C#應用程序中設置AWS S3憑證
- 5. 在StatusBar應用程序中隱藏NSView
- 6. 在Market Place中隱藏應用程序
- 7. 按鈕在c#控制檯應用程序中隱藏取消隱藏
- 8. 在黑莓應用程序管理中隱藏應用程序
- 9. 在Windows Phone 8應用程序中隱藏RecognizerUI應用程序
- 10. Android隱藏應用程序
- 11. 隱藏應用程序
- 12. 在c#窗口應用程序中隱藏用戶窗體
- 13. 隱藏的程序在C程序
- 14. 憑證。 Silverlight應用程序中的C#授權
- 15. 在C應用程序中隱藏Lua源代碼
- 16. 在DataGridView中隱藏任何列標題C#Windows應用程序
- 17. 如何在C#.Net 4.6中隱藏ConnectionString WPF應用程序
- 18. 從AngualrJS應用隱藏API訪問憑證
- 19. 隱藏開發人員的smtp憑證
- 20. iOS應用程序使用Facebook應用程序憑證
- 21. 憑證從.NET Web應用程序
- 22. Android中的隱藏應用程序
- 23. 隱藏Android應用程序中的值
- 24. 隱藏URL中的Android應用程序
- 25. 在Android Market上隱藏應用程序
- 26. 隱藏DB與在Rails應用程序
- 27. 在Google Play上隱藏應用程序
- 28. VB應用程序搜索MySQL數據庫的登錄憑證
- 29. 從Android應用程序列表中隱藏應用程序
- 30. Android的隱藏/取消隱藏應用程序圖標編程
當給予應用程序和數據本身的訪問權限時,無論發生什麼情況,總能找到密碼。 –
即使這樣做完成後,一個人仍然可以使用WireShark之類的東西在網絡連接上傳輸密碼時嗅探密碼。 – Kibbee
沒問題。這僅適用於ASP應用程序,不適用於桌面應用程序。 –