我知道它不可能100%的保护,但一些高或适用于广大的用户群。
举例来说,我在那里遇到浏览当前页面的源站点返回任何内容。
在另一种情况下,访问或试图下载的.js文件从文件浏览器本身
http://gget.com/somesecret.js ,
会重定向你的东西。
如果你混淆你的代码,这将是非常非常困难的解码呢? 如果是这样,这也是另一种很好的解决方案(建议使用什么软件)?
我知道它不可能100%的保护,但一些高或适用于广大的用户群。
举例来说,我在那里遇到浏览当前页面的源站点返回任何内容。
在另一种情况下,访问或试图下载的.js文件从文件浏览器本身
http://gget.com/somesecret.js ,
会重定向你的东西。
如果你混淆你的代码,这将是非常非常困难的解码呢? 如果是这样,这也是另一种很好的解决方案(建议使用什么软件)?
您可以您的JavaScript。 有很多的工具来做到这一点在野外,如http://www.javascriptobfuscator.com/ 。 然而,它并不能阻止任何人看到的代码,但使得它难以阅读。
这是根本不可能的。
对于访问者的浏览器能够执行脚本,它们必须能够下载。 不管你尽量拉与JS,服务器的权限等等,在他们可以永远只是这一天到底是什么诡计wget http://example.com/yourcoolscript.js
。 即使他们不能(例如,你需要为该请求“秘密”头部)可能会抑制大多数浏览器的行为,而不是从反正找停止决心的人。
从根本上说,因为JS是执行客户端,客户端必须能够访问“原始”的JS文件。
你可以做一个次要的事情是混淆,它可以帮助一点点。 但由于JS解释,这也是它自己的deobfuscator -见我以前的答案之一的一个例子。
基本上 - “如果你盖了,他们会看”。 :-)
有两种类型的用户:没有谁不能不在乎的大型集团公司。 无需以防止他们。
然后,还有谁真的希望看到你是怎么做到的组。 有没有办法来防止他们。 他们拥有所有的工具和规避你能想出任何保护的知识。 你可以使用模糊但是这要花费你的时间和金钱,所以在最后,你只能失去。
创建一个伟大的产品,再加上提供了良好的支持,人们会愿意为它付出。 城堡建筑没有过去好工作(不少功夫,一共只花了几个石头撕裂下来)和它肯定不会今天的工作。
如果你害怕,你的想法会被窃取,然后找一份新的工作,因为他们将有什么可以做的。
如果你有大的秘密,让他们在服务器上。
然后捆绑所有的JS文件在一个文件中,你混淆。
这应该防止很多人走的更远,并且还有减小尺寸和HTTP调用。
但是,这不会阻止真正的坏家伙(如有)。
我们正在建设一个JS重应用和很久以前治愈这种偏执。
如果事实上,我们却反其道而行之。
由于没有什么可保护的,为什么不开源有用的部分,并从其他人得到反馈?
试试吧,你会不会感到失望。
一种想法是使用WebSockets通过投放JavaScript文件浏览器socket.listener
与运行eval
。 这样一来,这是非常非常非常困难的,所有人都能看到实际的“源”,因为插座的连接已经被关闭。
还有另外一个惊人的战术,可以对网页中可以看出http://samy.pl , 它使用空间(\ u0020)和制表符(\ u0009)作为一个字节加密隐藏JS代码!
如果您查看源代码,你只能看到1号线的实际JS代码: http://pastebin.com/e0pqJ8sB看到自己,如果你能弄清楚它是如何工作(无剧透!)
至于混淆器去,见http://utf-8.jp/public/jjencode.html (和/或其他版本)
这个免费的混淆器上运行的客户端 ,并产生乱码是unminify.com
和jsbeautifier
甚至不能解码:
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+")"+"\"")())();
原代码:
alert("Hello, JavaScript")
来自美化网站的输出:
$ = ~[];
$ = {
___: ++$,
$$$$: (![] + "")[$],
__$: ++$,
$_$_: (![] + "")[$],
_$_: ++$,
$_$$: ({} + "")[$],
$$_$: ($[$] + "")[$],
_$$: ++$,
$$$_: (!"" + "")[$],
$__: ++$,
$_$: ++$,
$$__: ({} + "")[$],
$$_: ++$,
$$$: ++$,
$___: ++$,
$__$: ++$
};
$.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$;
$.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;
$.$ = ($.___)[$.$_][$.$_];
$.$($.$($.$$ + "\"" + $.$_$_ + (![] + "")[$._$_] + $.$$$_ + "\\" + $.__$ + $.$$_ + $._$_ + $.__ + "(\\\"\\" + $.__$ + $.__$ + $.___ + $.$$$_ + (![] + "")[$._$_] + (![] + "")[$._$_] + $._$ + ",\\" + $.$__ + $.___ + "\\" + $.__$ + $.__$ + $._$_ + $.$_$_ + "\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\" + $.__$ + $._$_ + $._$$ + $.$$__ + "\\" + $.__$ + $.$$_ + $._$_ + "\\" + $.__$ + $.$_$ + $.__$ + "\\" + $.__$ + $.$$_ + $.___ + $.__ + "\\\"\\" + $.$__ + $.___ + ")" + "\"")())();
希望这会启发那些有需要的!
尤其是在现代浏览器,它是完全是浪费时间。
我可以使用Firebug看到somesecret.js ......至于其他的,我比较好,如果你向下滚动,你会看到源。
您可以再压缩或混淆你的代码,这将使它很难改变(但不采取完全相同的副本)。 微小建议,因为它会导致你的页面加载速度稍快。
不要浪费你的时间。 如果浏览器可以下载运行它(它可以,否则代码是没用的),可以将程序写入下载并保存它。
一次又一次,我们已经看到了保护像这样的事情不工作,技术方法。
你真的认为你的JS代码是如此珍贵,它需要那种保护的? 一旦你得到它的工作,通过各种手段通过minifier运行,如果只有加快下载过程。 但作为保护它,我会专注于自己最擅长的(这我假设被编码的话)。
如果你真的需要保护的代码被查看,不要做在客户端JS。 把它放在服务器上,并只使用JS与沟通。
好吧,如果你自己的服务器,你可以拒绝来自比你自己的主机名的其他参照网址访问。 在Apache上,你可以做到这一点通过的.htaccess。
您还可以使用院长爱德华兹的包装收拾你生产的Javascript代码。
但要注意,与萤火虫或其他调试工具,大部分人还是能够通过DOM选项/检查,看看你的代码。
如果有人钢您的代码,你可以起诉他们。 你的代码的版权保护。 你就像小说的作者。 如果有人偷了你的应用程序或代码的任何部分,他们会很内疚的抄袭。
有一两件事你可以做的是完全绕过JavaScript的 - 在同等或以上主管语言(你可以找到一个JavaScript编译器)编写客户端逻辑并将其编译为JavaScript进行到底。 (这可能混淆了代码太清楚)