簡體   English   中英

加密表單應用程序的連接字符串

[英]Encrypting Connection string for a forms Application

我已經為我的項目創建了一個表單應用程序。 我想在我的網站上托管供用戶下載和測試。 因為我使用的是配置管理器,所以必須包含配置文件以及.exe,因為該應用程序有一個后端遠程數據庫。 當然,我現在才意識到我的連接字符串在那里有目共睹。 我嘗試將app.config重命名為web.config,但是當在我的Vista機器上以管理員身份運行時,aspnet_regiis -pef命令僅返回幫助菜單! 即使此命令有效並且我將web.config重命名為app.config,下載后運行該應用程序的計算機也會自動解密連接字符串嗎? 因此,總而言之,對於新手來說,解決這種困境的最佳方法是什么? 為什么aspnet_regiis -pef無法運行? 我也查看了有關該主題的其他帖子,但不幸的是,到目前為止,它們對我沒有用。

創建用戶/特定的連接字符串,或者將所有數據訪問包裝在某些Web服務中,您可以在其中控制授權。

創建用戶特定的連接字符串是最簡單的,但是可能會影響數據庫費用。 您仍然可以保留一個連接字符串,但是使用Windows身份進行連接。 在這兩種情況下,您都必須花費一些精力來確保用戶不能做的事情超出允許的范圍。

將數據訪問包裝在Web服務中要容易得多,但是要使其正常工作,還需要進行額外的工作。 也許您可以看看RIA服務 優點是多方面的:您可以控制Web服務中的權限,並且可以減少不必要查詢的暴露。

另請注意,即使您在配置文件中加密了連接字符串,任何惡意用戶也將能夠對其解密。 一個簡單的反編譯器將突出顯示您的解密密鑰。

您可以只將加密的連接字符串存儲在app.config中,但必須在應用程序中的某個位置包含加密密鑰。 因此,這是不安全的,因為每個人都可以反編譯應用程序或附加調試器並提取連接字符串。 或監視網絡流量。 實際上,現在有一種方法可以防止這種情況的發生-您的應用程序可以執行的任何操作都可以由所有人(可以訪問該應用程序)手動完成。

設計中的缺陷在於,應用程序首先需要直接訪問數據庫。 確保在這種情況下不會損壞數據庫幾乎是不可能的(除非數據庫僅用於讀取數據)。 本質上,您將必須在數據庫服務器上復制大部分業務邏輯,以確保沒有請求序列會破壞狀態。

更好的解決方案是僅通過Web服務間接訪問數據庫。 這使您可以更好,更輕松地實現服務器端驗證,甚至每個用戶的身份驗證和授權。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM