停止导出SQL Server数据库以保护它

时间:2013-12-11 04:19:38

标签: sql sql-server

我在./SQLEXPRESS实例上有一个带有SQL Server 2008数据库的vb.net Windows窗体应用程序。

我使用以下链接创建了项目设置..

http://msdn.microsoft.com/en-US/library/49b92ztk(v=vs.80).aspx

当用户安装我的应用程序时,数据库将可供他使用,用户只需导出SQL Server数据库。

如何保护我的数据库,以便用户不应该有一个容易获得的数据库副本?

我想创建一个新的密码保护服务器(因为我在上面的演练中创建了数据库)...在我的应用程序上安装我的应用程序,而不是./sqlexpress。我的应用程序使用的完整数据库副本不会仅供用户导出并获取我的数据库副本。

所以有人可以指导我......

1 个答案:

答案 0 :(得分:0)

问题是;您想在多大程度上保护您的数据?

更好地保护您的数据通常需要花费更多的开发时间和可能性更低的用户友好性,例如由于性能较低(加密不是免费的)。更复杂的代码通常也会产生更多的支持请求。

最佳余额取决于您的业务模式(如果有)以及您的用户要求。

请记住,您部署到最终用户计算机的任何内容最终都是易受攻击的。如果某些东西足够有价值,就会有人试图窃取它。

所以,你可以说最好的保护措施就是不要部署数据。您可以使用Web服务备份最终用户应用程序,并将数据保存在您自己的服务器上,例如在云端。

但我发现您有时只需要信任您的用户。如果你建立一个让他们开心的好产品,他们没有理由偷你。事实上,他们可能很高兴向你付钱。

如果您决定需要部署数据并且需要对其进行加密,那么您应该考虑选择SQL Server的原因。 您需要什么数据库功能?你需要一个完整的数据库服务器吗? 任何本地管理员都可以在几秒钟内控制任何SQL Server数据库,因此内置的SQL Server身份验证不会带来很多好处。

您可以切换到SQLServer CE并将数据库保留在应用程序中。这将使普通用户访问数据库变得更加困难。

如果您所做的只是查找单词,那么使用Lucene等其他存储引擎可能会更好。

Lucene实际上是一个搜索引擎,因此它针对匹配单词或部分单词进行了高度优化。

您可以在.NET应用程序中运行Lucene,这样您甚至不需要最终用户来安装SQL Server。有一个.NET版本的Lucene here

然而,Lucene不保护您的数据。有tooling available允许任何人查看并从存储的索引文件中提取数据。

由于Lucene是开源的,你可以扩展它以支持加密数据存储(参见this related question)。