首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分发自定义Server数据库应用程序的最佳方法

分发自定义Server数据库应用程序的最佳方法
EN

Stack Overflow用户
提问于 2020-01-05 01:15:59
回答 1查看 98关注 0票数 0

我有一个SQL Server 2016数据库,我想将其打包为一个商业应用程序,然后可以分发给我的客户。我只是不知道该如何包装,我希望有人能给我一些明智的建议.

理想情况下,我只想给我的客户一个DB还原文件(或者其他一些可执行的包),以便将应用程序复制到他们现有的Server实现上。我不知道该如何解决的棘手部分是:

  1. 我如何保护存储过程和函数的源代码,这些存储过程和函数包含我的专有IP,这样客户就看不到代码了?我不介意(而且实际上更喜欢)我的客户能够查看表和视图。
  2. 我如何为我的应用程序整合软件许可,使其只在他们支付维护/许可费用的情况下才能发挥作用?
  3. 最后,我可能希望为Oracle用户复制相同的应用程序,因此,如果相同的方法在两个平台上都能工作,那将是理想的。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-05 01:29:59

(警告:这个答案包含了不必要的社论,但现在是星期六晚上)

我如何保护存储过程和函数的源代码,这些存储过程和函数包含我的专有IP,这样客户就看不到代码了?

严格地说,你不能。

鲍勃和查理是同一个人的情况下,DRM或IP保护系统注定最终会失败,因为Bob (用户)必须拥有解密密钥才能查看受保护的内容,这意味着Charlie (相同的用户,例如,在他们的许可证过期之后)也必须拥有解密密钥。目前,计算机系统中唯一有效的数字版权管理(例如,用于媒体的广泛DRM技术,用于游戏的各种DRM技术)是使用OS提供的内容保护支持或第三方内核模式驱动程序包,这就是为什么您从未看到基于Linux的OSes有效的DRM。

尽管如此,在Server中运行的代码不能使用操作系统提供的DRM功能。

您可以在存储过程运行时使用WITH ENCRYPTION - 但是,任何服务器管理员都可以简单地附加server调试器 (例如SSDT),并在内存中查看解密存储过程.或只需使用一个免费的解密工具.

我如何为我的应用程序整合软件许可,使其只在他们支付维护/许可费用的情况下才能发挥作用?

DRM提供商的整个行业都有自己的技术。几十年前,有一个蓬勃发展的行业,小公司向软件出版商提供DRM服务(就像Adobe、Macromedia和其他公司过去用来“保护”他们价值600美元的软件的限时演示版本一样),但这个行业现在已经死了,因为正如我前面所说,从数学上来说,要实现这一点是不可能的,一个坚定的对手可以很容易地绕过它。(所谓“坚定的对手”,我指的是一个熟练的中学学生,拿着一本IDA Pro)。

在2000年代中后期合法消费者对严格的数字版权管理系统的强烈反对之后,当软件发布者使用他们自己的内核模式DRM系统时,自然会有错误并导致数据损坏。指出了假阳性和假阴性,DRM在业务系列软件供应商中刚刚失去了人气--到头来,它对商业系列软件来说并不值得(没有忘记实际上让人们盗用你的软件从而获得市场主导地位、思维份额、并导致更多付费客户的游击式营销方式--像我自己这样的竞争理论家相信,在2000年代早期,Adobe容忍Photoshop,这导致了他们今天拥有的庞大用户群,他们正在成功地利用云创意)。

当然,在过去(1980年代到1990年代),昂贵的软件使用了硬件工具--这些仍然是一件事,但同样,只要修改原始软件以跳过检查硬件信标的JNE指令,就可以很容易地破解它们--当然,您也无法从Server sproc访问硬件软盘。

自2010年代初以来,随着互联网连接的普及,越来越多的软件,包括关键任务的业务软件,被专门作为互联网上的应用程序使用,而DRM在互联网上并不受关注。根据应用程序的工作方式,这可能是一个选项。

我最近开发的一款产品对现场客户数据进行了“专有”分析--它的工作方式是在客户的数据库服务器计算机上运行一个小程序,并从他们的数据库程序中读取数据,并在将其发送到我们的云服务之前进行一些快速聚合,然后我们在那里处理他们的数据并将其作为基于web的报告服务提供。顺便提一句,我们使用这种技术并不是为了让我们的分析服务免受破解和未经许可的用户的攻击,而是因为我们的用户要求能够从他们的手机、平板电脑或外出时查看他们的报告--如果它在他们的数据库服务器上作为office程序运行,这是根本无法做到的(而且任何正常的sysadmin都不会让我们或其他任何人运行我们自己的web服务器,并设置端口转发规则和动态DNS--仅用于我们的报告)。

最后,我可能希望为Oracle用户复制相同的应用程序,因此,如果相同的方法在两个平台上都能工作,那将是理想的。

我认为你有点天真--尤其是因为PL/SQL和T-SQL-甲骨文有一个帝国需要维护之间存在着巨大的不兼容。

最后,我注意到,我们自己平台的提供商:微软,甚至不试图混淆或加密他们自己的专有二进制文件--您可以使用.NET Reflector或ILSpy自由地浏览任何RedGate框架程序集--这扩展到他们昂贵产品的CIL程序集,如Exchange、等。说到底,一群好奇的用户不会打破你的商业模式,如果你的业务依赖于包含在几个Server存储过程中的某种秘密算法,那么你的商业模型就不值得通过人为的方式来维持生存,因为即使人们看不到你的sproc的源代码,它通常也很简单,可以用黑匣子反向设计你的超级特殊算法,然后以半价将它作为竞争产品发布,从而将你逐出市场,而这一切都是100%合法的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59596259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档