保护 Winform Application/Sql 数据库不被复制

Protect Winform Application/Sql Database From Copying

我正在使用 c# (VS2010 FrameWork:v4.0) 和 SqlServer 2012 构建应用程序。我在网上搜索以找到防止复制该系统的方法,我认为唯一需要防止复制的部分是数据库。

我希望你能给我一些关于这个问题的建议。我需要 answers/opinions 以下内容:

  1. 我是否还需要保护应用程序(执行文件)不与数据库一起复制?如果是,这是否意味着如果用户丢失了应用程序文件,我必须向用户提供一个新副本来安装它?

  2. 我想保护数据库的一个想法是在数据库中保存一些passwords/keys(以varbinary) 并且当设备登录(运行应用程序)时,应用程序检查设备的(MAC 地址)是否是未保存然后应用程序要求输入密钥。使用密钥后,设备 mac 地址将与密钥一起保存。这是正确的做法吗?有什么建议吗?

  3. 如果我需要保护应用程序部分不被复制,有什么办法吗?

  4. 我还阅读了有关在客户端 PC 上安装 SQLExpress 的信息,这应该可以保护数据库文件免受操作,因此我必须提供一种升级/将来更新数据库脚本,而不是用新的数据库替换客户的数据库。我想在应用程序中提供一个受密码保护的表单,我可以在表单的文本框中编写脚本(__For 示例:Alter Proc_ ...),然后保存。我可以这样做吗?或者那会是一件愚蠢的事情吗?

提前致谢

你不能。任何相反的说法都是万金油。

保护您的应用程序的唯一方法是将其作为服务提供,托管在您 own/control.

的主机上

To find a way to prevent user from using APP+DB without my permission(for example registering using keys)

可以创建应用程序仅在指定硬件上运行的许可方案。您的应用程序获取主机指纹(例如 .net MAC),将其上传到您托管的服务,您使用私钥对指纹进行签名并将签名提供给应用程序,然后应用程序使用嵌入 public 密钥并运行应用程序。虽然这听起来可行,但有很多方法可能而且经常出错。用户经常更改指纹(例如硬件更新)。指纹很难在虚拟化环境中实施(VM 可以编辑它们的 MAC)。很难针对愿意攻击和绕过您的保护的中等黑客来强化应用程序代码,而且基本上不可能针对熟练的黑客进行强化。

但是你也问了数据库的问题,并且标记了问题sql-server。对于那个部分,我只能加倍强调我之前的回答:不可能保护数据库不被and/or修改现场管理员,随意。有一些安全的方法可以审核 访问和修改数据库,因此您可以证明篡改并采取相应行动(拒绝支持或收取额外费用)。但你无法阻止它。

最终你要的是DRM