如何在winform的SQL 2005 Express数据库中保护数据?

时间:2010-10-20 17:26:05

标签: sql-server-2005-express database-security

我有一个使用SQL 2005 Express的c#winform应用程序。该应用程序创建数学和阅读测验,并销售给学龄儿童的父母。父母从我的网站购买并下载包含测验的SQL文件,并将其安装在应用程序中(安装在他们孩子的计算机上)。

我有两个SQL安全问题:

(1)有些孩子可能不希望测验出现在他们的计算机上,因此他们可能会尝试(a)删除SQL数据库或(b)通过更改数据库中的值来禁用应用程序。

在我看来,任何拥有SQL Server Management Studio Express的人都可以轻松更改数据库的内容。

因此,可以采取哪些措施来防止这种情况(除了向父母推荐他们不让孩子使用管理员帐户外)?

(2)我唯一的收入是出售测验,所以我希望保护这些数据不被复制和共享。鉴于(a)文件需要从我的服务器下载到孩子的计算机然后安装,然后安装(b)然后安装后,它们只是驻留在孩子的计算机上,我该怎么做呢?

在我看来,任何拥有SQL数据库发布向导的人都可以轻松复制数据库的内容。

是否可以只允许我的应用程序访问SQL数据库?是否可以限制其他人访问它(即使是使用Windows管理员帐户的人)?

目前,我的应用程序的安装脚本仅为我的应用程序创建SQL 2005 Express服务器的新实例,并使用Windows身份验证。

我在Stackoverflow和其他地方已经阅读了几篇SQL安全帖,但我还没有弄清楚这一点。

2 个答案:

答案 0 :(得分:1)

从一个不稳定的黑客角度来看,父母被搞砸了。这是因为他们的孩子可以物理访问计算机。从理论上讲,他们可以在任何方面攻击它。

现在,让我们更有可能。

您发现不给予孩子管理员访问权限会产生很大的影响。但是,如果您说大多数家庭都无法接触到,那么SQL Management Studio也是如此。你可以打赌孩子们不会去拿这个并安装它。

然而,最后,你可能会因为一些老式的混淆而变得更好。而不是像SQL Management Studio这样的东西,那里有免费提供的工具来修改和防止这些测验出现或者其他任何可用的攻击,你创建自己的文件格式,并希望大多数孩子在看到二进制文件时会放弃gobbledy性国

如果他们要放弃,很多人可能会放弃SQL Express。也就是说,孩子们非常聪明,有些人可能愿意按照他们在Google上搜索的分步说明来打败你的软件。

听起来您正在将这些测验部署到不受您控制的计算机上的SQL Express实例上。 They aren't your machines anymore.

我不想说“你不能做你所要求的”,但是你在问如何阻止某人使用管理员工具来击败你的软件。我想我的回答是“你做不到”。你必须重新检查你的设计,或者只是认为大多数孩子不会走这么远。

答案 1 :(得分:0)

您可以对测验数据使用加密。

Encrypt and decrypt a string

这方面的缺陷是你的应用程序必须在其代码中加密/解密密钥,因此有人仍然可以通过重新编译工具或反射器等方式访问它。

真正的答案是保护您的应用程序几乎是不可能的。想想大公司及其保护技术,微软,Adobe等......他们都有盗版问题。

此外,如果您的应用程序足以让很多人盗版,您很可能会获得大量合法销售。

在此之前,我不会太担心,只需采取一些不会过多干扰您的工作流程的小预防措施。

相关问题