1

我有使用 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 服务器实例,它使用 Windows 身份验证。

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

4

2 回答 2

1

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

现在,让我们来看看更有可能的事情。

您发现不给孩子管理员访问权限会产生很大的不同。但是,如果您说这是大多数家庭无法企及的,那么 SQL Management Studio 也是如此。你可以打赌孩子们不会去安装它。

但是,最后,使用一些老式的混淆可能会更好。您可以创建自己的文件格式并希望大多数孩子在看到二进制文件时放弃狼吞虎咽。

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

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

我不想说“你不能做你所要求的”,而是你在问如何防止有人使用管理员工具来破坏你的软件。我想我的答案是“你不能”。您必须重新检查您的设计,或者只是接受大多数孩子不会走得太远的想法。

于 2010-10-20T17:32:57.673 回答
0

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

加密和解密字符串

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

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

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

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

于 2010-10-20T17:39:33.610 回答