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

我有两个SQL安全问题:

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

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

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

(2)我唯一的收入是出售测验,因此我想保护这些数据免受复制和共享。我该如何做到这一点(a)需要将文件从我的服务器下载到孩子的计算机,然后安装,然后(b)然后安装后,它们只是居住在孩子的计算机上。

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

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

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

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

有帮助吗?

解决方案

从怪异的黑客角度来看,父母被搞砸了。这是因为他们的孩子可以物理访问计算机。从理论上讲,他们可以以各种方式攻击它。

现在,让我们开始使用更有可能的事情。

您确定不给儿童管理员访问会带来很大的不同。但是,如果您说的是大多数家庭的范围,那么SQL Management Studio也是如此。您可以打赌,孩子们不会去安装它。

但是,最后,您可能会有一些好的老式混淆,您可能会更好。与其使用SQL Management Studio之类的东西,那里有免费可用的工具来修改和防止这些测验出现或其他任何可用的攻击,您可以创建自己的文件格式,并希望大多数孩子在看到二进制时会放弃Gobbledy-Gook。

如果他们要放弃这一点,那么许多人可能会放弃SQL Express。也就是说,孩子们很足智多谋,有些孩子可能愿意按照他们在Google上搜索的逐步说明来击败您的软件。

听起来您正在将这些测验部署到无法控制的机器上的SQL Express实例上。 他们不再是您的机器了。

我不想说“您不能做您在问的事情”,但是您在问如何防止某人使用管理员工具来打败您的软件。我认为我的答案是“你不能”。您必须重新审查设计,或者只是考虑到大多数孩子不会走那么远的想法。

其他提示

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

加密并解密字符串

这是您的应用程序中的缺陷,必须在其代码中具有加密/解密密钥,因此仍然可以通过重新编译工具或诸如Reflector之类的东西访问它。

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

另外,如果您的申请足以让许多人盗版,那么您很可能会有很多合法的销售。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top