问题 你如何在JavaScript中强制执行软件许可? [关闭]


我正在寻找一个看起来很酷的javascript框架。我喜欢这些演示,当我查看页面源和附加的.js文件时,我注意到该文件仅具有“测试和评估目的,受版权保护,此软件不是免费的,仅授权给您进行测试”

但就在此之下,整个代码就在那里(因为它是javascript)。我可以看到你是否有一个已编译的项目,有人必须闯入一个未经授权的系统获取源代码,但你怎么会开始强制执行这样的纯文本语言?

删除他们的评论后,找到+替换变量的重命名,重新安排这些功能,甚至不可能知道是否有人在使用网络蜘蛛。这是一个失去业务的5秒方式。

我真的好奇,因为这个产品似乎是他们的整个商业计划,但他们所有的商业秘密都可以在演示中获得。国家没有为这类事情提供足够的补救措施,因此创造者要负担保护它(我的意思是,如果那是他们的商业计划)

你有什么见解吗?解决方案我完全忽略了?我有点不知道为什么有人会投入这么多精力去做一些他们不打算自由的东西,而是免费赠送给他们。


2213
2018-05-23 15:59


起源

这与任何行业基本相同。可以假设他们在演示中有某种超时。 - Neal
是的,但这是纯文本,不查询任何服务器或任何东西。我喜欢承担很多事情,但是当Skype使用无数据库时,或者当我的身份在索尼受到损害时,我必须采取行动。 - CQM
@RD这个问题和“我如何防止反盗版”相同。只下载电影和音乐同样容易,但为什么音乐和电影公司仍能赚钱? - Raynos
@Raynos,我知道音乐和电影公司竭尽全力打败盗版,尽管可能无效。 - CQM
@RD我指出的是盗版导致的收入损失并不像你想象的那么大。这是一个计算风险。这只是软件业务的一个事实。 - Raynos


答案:


除了模糊它之外,没有办法“加密”JavaScript代码,所以是的,没有办法可靠地复制保护商业JavaScript产品。

他们仍然值得提供,因为

  • 西方国家的大多数企业客户都不敢冒险窃取软件,因为他们有大量资金被抓获和起诉的风险 - 如果不是通过代码,那么可能是通过一个心怀不满的实习生吹口哨

  • 与盗版办公室软件不同,盗窃在公开场合与原始JavaScript一样公开可见 - 您永远不会知道使用算法方法可能存在(或出现)用于查找被盗JavaScript代码的技术。

  • 真正的业务损失可能没有人们想象的那么重:如果盗取JavaScript小部件的价格足够便宜,那么只需要一个免费的小部件即可。商业JavaScript小部件通常不提供任何 独特 功能 - 流行的东西往往很快被克隆 - 他们的卖点通常是他们做了几十个开源解决方案也做的事情,但是 非常 好,快,干净,记录完备。


9
2018-05-23 16:05



此外,混淆器可以使用像这样的工具轻松撤消 jsbeautifier.org - Rocket Hazmat
@Rocket那不太正确,美化者可以美化代码。代码的缩进和布局可能是最小的混淆形式。 - Tom Gullen


总是有obfustication工具: http://www.javascriptobfuscator.com/default.aspx

这样的问题 彻底挖掘(双关语)的贪污行为的利弊


3
2018-05-23 16:04



这些可以很容易地撤消: jsbeautifier.org - Rocket Hazmat
是的,但是使用客户端解释的脚本语言的架构,这是你将来最接近的。 - Michael Jasper
总有deobfustication工具: gosu.pl/decoder ,是的美化,从那里再次,简单的查找和替换变量是一件简单的事情,特别是与正则表达式 - CQM
没有什么用处。 - Raynos


我想你不能强制执行许可证。
也许他们依赖于计划使用他们产品的公司的诚实......

毕竟,你有一些双重许可的开源项目:免费/开放项目的GPL,否则是商业广告(iText,例如,IIRC)。同样的推理适用于这些项目。

此外,您可以公开该软件的残缺版本。当然,如果你找到一个人使用它的网站并且已经付费以获得完整版本,那么它也很容易被窃取。

通常,与公司销售的大多数开源软件一样,他们依靠软件周围的服务来赚钱:您购买软件,获得高级支持,如快速修复和更新,自定义等。


2
2018-05-23 16:08





这是因为网络是一种开放技术之间的冲突,所有客户端数据都是开放的,任何人都可以查看,与企业和暴利个人的专有和货币利益相冲突,结果就是试图混淆。

所有混淆最终都是通过默默无闻的安全,因此重申是否在网上,某人是重要的 能够 把它分开,只是取决于它们是否可以被打扰。您的软件越有价值,就越有可能如此。

许多企业和个人似乎都担心他们的软件会被盗,而这通常被误导,因为他们通常会过度估计他们软件的独特性,而不幸的是,大多数时候这些软件并不是特殊的雪花。

你可以保护你的Javascript的唯一方法是通过混淆真的,有很多在线工具,最好的一个 谷歌的Closure编译器。混淆在一定程度上从代码中删除了语义,例如有用的变量名,而诸如闭包编译器之类的一些实际上可以改变代码的逻辑。但是,代码仍然是代码,它仍然是合乎逻辑的,有人可以弄清楚它的作用。


1
2018-05-23 16:04



混淆仅用于阻止竞争对手窃取您的高级代码结构。它并没有阻止实际的代码盗窃。 - Raynos


  1. 在JavaScript中没有“编译项目”这样的东西。
  2. 您不必“闯入未经授权的系统获取源代码”。加载页面后,您就可以访问页面使用的每一点JavaScript。
  3. 版权提供了一个边际数量 保护。如果你找到一块 网络上的JavaScript 兴趣,你完全自由 仔细检查并重写它 自己的风格。如果你只复制和 然后粘贴受版权保护的代码 有一些潜在的责任但是 这不太可能。
  4. 唯一真实的     保护是通过专利但     没有保护就没有保障     诉讼。

1
2018-05-23 16:19



#1#2#3就一般来说是源代码问题的一个例子 - CQM