我有使用 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 安全文章,但我还无法弄清楚这一点。