0

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

我想你给我提供一些关于这个问题的建议。我需要了解以下答案/意见:

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

  2. 一个想法,我在我的脑海,保护DB是保存一些口令/密钥在DB(在VARBINARY的形式),并且在设备登录(运行应用程序)的应用程序检查设备的(MAC地址)是否保存,然后应用程序要求输入密钥。一旦使用密钥,设备的MAC地址将与密钥一起保存。这是一件正确的事情吗?有没有关于它的建议?

  3. 如果我需要保护应用程序部分不被复制,是否有任何想法如何做?

  4. 我也看到了有关客户端PC上安装的SQLExpress,并且应该保护数据库文件从操控,所以我必须要提供一种方法来升级在未来/更新数据库的脚本,而不是一个替代客户端的DB新的一个。我想在应用程序中提供一个由密码保护的窗体,并且我可以在窗体的文本框中编写脚本(__For Example:Alter Proc_ ...),然后保存它。我可以这样做吗?或者这将是一个愚蠢的事情吗?

在此先感谢

+0

您的帖子中有很多流行语,但并不是一个真正适合的问题陈述。唯一相关的是_“防止复制这个系统”_。什么是“这个系统”?如果它是您在本地安装的应用程序和数据库,则您可以执行的操作很少。 – CodeCaster

+0

是的,我的意思是** DB +应用程序在一起**,由* system *。保存密钥然后将它们与PC的MAC地址相关联的想法是正确的做法吗?但是如果我保存了数据库中的20个密钥并且我的客户端有21台个人电脑可以使用?请记住,这是一个** winform应用程序** *(它不在一个在线服务器上托管,它可能只用于本地网络)*。 – Shoshotto

回答

1

你不能。任何相反的要求是蛇油。

保护您的应用程序的唯一方法是将其作为服务提供,托管在您拥有/控制的主机上。

要找到一种方法来防止用户使用APP + DB未经我的许可(例如,使用键注册)

这是可能的应用程序只能运行在指定的硬件在哪里创建许可方案。您的应用程序需要使用主机指纹(例如.net MAC),将其上传到您承载的服务,使用私钥签名指纹并将签名提供给应用程序,然后应用程序使用嵌入的公钥验证指纹签名,然后运行应用程序。虽然这听起来可行,但有很多方法可以并且经常出错。用户频繁更换指纹(例如硬件更新)。指纹难以在虚拟环境中实施(虚拟机可以编辑其MAC)。对于愿意攻击并绕过你的保护的中度黑客来说,加强应用程序代码是非常困难的,基本上不可能对付一个熟练的黑客来加固应用程序代码。

但你也问过关于数据库和标记问题sql-server。到第一部分我只能对我以前的答案翻一番:它是不可能来保护数据库不被现场管理员随意访问和/或修改。有安全的方式来访问和修改数据库,所以你可以证明篡改并采取相应的行动(拒绝支持或收取额外费用)。但是你无法阻止它。最后你要求的是DRM

+0

保存密钥然后将它们与PC的MAC地址相关联的想法是正确的做法吗?但是如果我保存了数据库中的20个密钥并且我的客户端有21台个人电脑可以使用?请记住,这是一个winform应用程序(它不在一个在线服务器上托管,它可能仅用于本地网络)。@ RemusRunsanu我认为你的意思是在线服务。我对吗?如果没有,请让你更清楚? – Shoshotto

+0

如果我可以管理** ** PREVENT使用文件**或** LIMIT使用另一台计算机上的文件**,则可以使用用户复制文件。 _(复制的文件将被粘贴到)_。这是我原来的帖子的重点。要找到一种方法来防止用户未经我的许可使用APP + DB(例如使用密钥注册) – Shoshotto

+0

非常感谢@RemusRunsanu。可以编辑物理MAC地址吗?我认为这是不可能的。还是你的意思是黑客可以克隆或以某种方式显示掩码作为他们的物理MAC地址? – Shoshotto