問題是;你想要保護你的數據有多遠?
更好的數據保護通常是以更多的開發時間和更少的用戶友好性爲代價的,例如由於性能較低(加密不是免費的)。更復雜的代碼通常也會導致更多的支持請求。
最好的平衡取決於您的商業模式(如果有)和您的用戶需求。
請記住,您部署到最終用戶機器的任何內容最終都會受到攻擊。如果有足夠的價值,就會有人試圖竊取它。
所以,你可能會認爲最好的保護不是部署數據。您可以使用Web服務備份最終用戶應用程序,並將數據保存在您自己的服務器上,例如在雲中。
但是我發現你有時只需要信任你的用戶。如果你建立一個讓他們開心的好產品,他們沒有理由從你那裏偷竊。事實上,他們可能很高興爲你付錢。
如果您決定需要部署數據並且需要對其進行加密,則應考慮爲什麼選擇SQL Server。 你需要什麼數據庫功能?你需要一個完整的數據庫服務器嗎? 任何本地管理員都可以在幾秒鐘內獲得對任何SQL Server數據庫的控制權,所以內置的SQL服務器身份驗證不會帶來很多好處。
您可以切換到SQLServer CE並將數據庫保存在您的應用程序中。這會使數據庫難以訪問普通用戶。
如果你只是在查找單詞,你可能會更喜歡使用不同的存儲引擎,如Lucene。
Lucene實際上是一個搜索引擎,所以它對匹配單詞或單詞部分進行了高度優化。
您可以在.NET應用程序內部運行Lucene,因此您甚至不需要最終用戶來安裝SQL Server。有一個.NET版本的Lucene here。
但是Lucene並不保護您的數據。有tooling available,這將允許任何人查看和提取存儲的索引文件中的數據。
由於Lucene雖然是開源的,但可以將其擴展爲支持加密數據存儲(請參閱this related question)。
如果您將數據庫發送到客戶端計算機,那麼確實無法阻止該用戶複製或查看該數據庫。如果你不能信任你自己的用戶和你的數據庫,那麼把它在數據中心裏鎖定,並且只提供一個服務接口。 –
http://stackoverflow.com/questions/1714640/what-are-the-options-available-to-encrypt-a-sql-server-express-database –
感謝您的回覆。 那麼我應該如何開發我的桌面應用程序,以便我的數據庫保持安全。我已經開發了一個基於vb.net英語 - 英語詞典的離線窗體,其詞彙和含義在sql server上的數據庫中。但我不希望用戶輕鬆獲得單詞數據庫的副本。 請您友善地發佈我可以從哪裏學習的任何鏈接或教程,如何創建一個項目以保護其數據庫,並且還存在性能問題。因爲它有一個大約85 MB的大型數據庫,有2,031,147行... 感謝您的任何迴應... –