通过使用AJAX回调发送参数来防止插件被盗

时间:2011-07-14 08:59:05

标签: javascript jquery

我已经构建了一个新的jQuery插件,我希望能够在购买之前向用户演示这个。但我也不希望任何人能够简单地复制代码而无需支付费用。

出于这个原因,我使用http://www.vincentcheung.ca/jsencryption/

对插件进行了编码

我想到了两个想法,以进一步保护/使其更难复制:

  • window.location.hostname
  • 检查域名的硬编码
  • 使用AJAX将有关网站的更多信息发送回我服务器上的PHP脚本。

除了域名之外,还可以使用Javascript获取哪些额外信息。例如。 PHP你有$ _SERVER []。

您是否有进一步保护它的想法?

好的,我刚刚自己写了这个,这似乎适用于两个不同的领域。

$.ajax({
    url: 'http://example.co.uk/record.php',
    type: 'post',
    data: 'href='+document.location.href + '&referrer='+document.referrer
});

Record.php

mysql_query("INSERT INTO `demo` (`id` ,`datetime` ,`href` ,`referrer`)VALUES (NULL ,CURRENT_TIMESTAMP , '".$_POST['href']."', '".$_POST['referrer']."')");

3 个答案:

答案 0 :(得分:4)

我认为你不能那样做。如果您想向用户演示,只需录制其中的影片即可。大多数网站都是这样做的。

答案 1 :(得分:1)

你可能不喜欢这个答案,但你不能以任何真正有意义的方式“保护”你的javascript。混淆是你唯一真正的追索权,这不是有意义的保护。

你最好只提供合适的许可条款。

答案 2 :(得分:1)

任何公开的代码都是不受保护且无法保护的。 @TheBrain的答案是他们无法窃取实际代码的最可靠的解决方法,尽管他们仍然可以窃取这个想法并让别人写下来。

如果你绝对希望能够让某人在浏览器中使用它而不在那里,那么一种跟踪方法就是使用Image对象。

new Image().src = "http://mydemosite.com/tracker.php?domain=" +  encodeURIComponent(window.location);

http://mydemosite.com/tracker.php然后会记录调用域,并且只要传入的域与您允许的域不匹配,就可以设置警报。当然,你必须混淆你的代码以隐藏这个小金块。

这解决了两个问题。一,它不使用AJAX,因此您不必担心相同的原始策略。第二,因为它不使用AJAX,所以它不会出现在Firefox的控制台选项卡中。

当然,这仍然可以通过勤奋和混淆的代码来检测,可以清理并使其可读,但是你可以做到对吗?您可能至少有一次调用跟踪器/记录器,这就是识别窃贼所需的全部内容。