我使用c#(VS2010 FrameWork:v4.0)和SqlServer 2012来构建应用程序。我在网上搜索以找到防止复制这个系统的方法,我认为唯一需要保护免受复制的部分是数据库。
我希望您能就此问题向我提供一些建议。我需要有关以下内容的答案/意见:
我是否还需要保护应用程序(执行文件)不被数据库复制?如果是,这是否意味着如果用户丢失了应用程序文件,我必须为用户提供一个新副本来安装它?
我在脑海中想到保护数据库的一个想法是在DB中保存一些密码/密钥(以 varbinary 的形式),当设备已登录(运行应用程序)应用程序检查设备( MAC地址)如果未保存,则应用程序会要求输入密钥。一旦使用密钥,设备mac地址将与密钥一起保存。这是正确的做法吗?有什么建议吗?
如果我需要保护应用程序部分不被复制,是否有任何想法如何操作?
我还读过关于在客户端PC上安装 SQLExpress 的内容,这应该保护数据库文件免受操纵,所以我必须提供一种方法来升级/更新数据库脚本而不是用新的DB替换客户端的DB。我想在应用程序中提供一个受密码保护的表单,我可以在表单的文本框中编写脚本(__例如:Alter Proc_ ...),然后保存它。我可以这样做吗?或者这是一件愚蠢的事情?
提前致谢
答案 0 :(得分:1)
你做不到。任何相反的声明都是蛇油。
保护您的应用程序的唯一方法是将其作为服务提供,托管在您拥有/控制的主机上。
找到一种方法来阻止用户在未经我许可的情况下使用APP + DB(例如使用密钥注册)
可以创建应用程序仅在指定硬件上运行的许可方案。您的应用程序获取主机指纹(例如net MAC),将其上载到您托管的服务,使用私钥对指纹进行签名并向应用程序提供签名,然后应用程序使用嵌入的公钥验证指纹签名,运行应用程序。虽然这听起来可行,但有很多方法可以并且经常出错。用户经常更改指纹(例如,硬件更新)。指纹很难在虚拟化环境中强制执行(虚拟机可以编辑其MAC)。很难强化应用程序代码来对抗那些愿意攻击并绕过你的保护的温和黑客,并且基本上不可能对熟练的黑客强化它。
但您也询问了数据库并标记了问题sql-server
。要那个部分,我只能翻倍我的上一个答案:不可能保护数据库免受现场管理员的访问和/或修改,随意。有审核访问和修改数据库的安全方法,因此您可以证明篡改并采取相应行动(拒绝支持或收取额外费用)。但你无法阻止它。
最终你要求的是DRM。