如何防止您的JavaScript代码被盗,复制和查看?

我知道100%的保护是不可能的,但是对于大多数用户来说,这是很高的。

例如,我遇到了一个查看当前页面源的网站,什么也没有返回。

在另一种情况下,访问或试图从浏览器下载.js文件本身

http://gget.com/somesecret.js ,

会redirect你和东西。

如果你混淆了你的代码,解码会非常困难吗? 如果这样也是另一个好的解决scheme(推荐使用什么软件)?

你可以混淆你的Javascript。 有很多工具可以在野外使用,例如http://www.javascriptobfuscator.com/ 。 但是,这并不妨碍任何人看到代码,但更难以阅读。

这根本不可能。

对于访问者的浏览器能够执行脚本,他们必须能够下载它。 无论你试图用JS,服务器权限等等,在一天结束时他们总是可以只用wget http://example.com/yourcoolscript.js 。 即使他们不能(例如,你需要“秘密的”这个请求的标题),这可能会抑制大多数浏览器的行为,而不是阻止一个确定的人看起来。

基本上,因为JS是在客户端执行的,客户端必须有权访问“原始”JS文件。

你可以做的一件小事是混淆,这可以帮助一点点。 但是因为JS被解释了,所以它也是它自己的解混器 – 参见我之前的一个例子。

基本上 – “如果你build立它,他们会看”。 🙂

有两种用户:有一大群谁不在乎。 没有必要保护他们。

那么,这个组织真的想看看你是怎么做到的。 没有办法保护他们。 他们拥有所有的工具和知识来规避你可能提出的任何保护。 你可以使用混淆,但这会花费你的钱和时间,所以最终你只能输。

创造一个伟大的产品,并提供良好的支持,人们愿意为此付出代价。 过去,城堡build筑工作不好(很多努力,只需要几块石头就可以把它们撕下来),今天肯定不行。

如果你担心自己的想法会被盗用,那就去找一份新的工作,因为他们会做,而且你什么都做不了。

如果你有很大的秘密,把它们放在服务器上。

然后将所有的JS文件捆绑到一个文件中,混淆。
这应该阻止很多人走得更远,并且还会减小大小和http呼叫。
但是,这不会阻止真正的坏人,如果有的话。

我们正在构build一个JS沉重的应用程序,很久以前就治愈了这种偏执狂。
事实上,我们做了相反的事情。

由于没有任何东西可以得到保护,为什么不开放源代码有用的部分,并得到别人的反馈?
试试吧,你不会失望的。

其中一个想法是使用websockets通过socket.listener向浏览器提供javascript文件并使用eval运行。 这样,任何人都很难看到实际的“源”,因为套接字的连接已经closures了。

http://samy.pl的主页上可以看到另一个惊人的策略,; 它使用空格(\ u0020)和制表符(\ u0009)作为字节密码来隐藏JS代码!

如果你查看源代码,你只能看到1行的实际的JS代码: http : //pastebin.com/e0pqJ8sB看看自己,如果你能弄清楚它是如何工作的(没有破坏者!)

至于混淆器,请参阅http://utf-8.jp/public/jjencode.html (和/或其他版本)

这个免费的混淆器运行客户端 ,并产生unminify.comjsbeautifier甚至无法解码的乱码:

 $=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+",\\"+$.$__+$.___+"\\"+$.__$+$.__$+$._$_+$.$_$_+"\\"+$.__$+$.$$_+$.$$_+$.$_$_+"\\"+$.__$+$._$_+$._$$+$.$$__+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+"\\"+$.__$+$.$$_+$.___+$.__+"\\\"\\"+$.$__+$.___+")"+"\"")())(); 

原始码:

 alert("Hello, JavaScript") 

来自两个美化网站的输出:

 $ = ~[]; $ = { ___: ++$, $$$$: (![] + "")[$], __$: ++$, $_$_: (![] + "")[$], _$_: ++$, $_$$: ({} + "")[$], $$_$: ($[$] + "")[$], _$$: ++$, $$$_: (!"" + "")[$], $__: ++$, $_$: ++$, $$__: ({} + "")[$], $$_: ++$, $$$: ++$, $___: ++$, $__$: ++$ }; $.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$; $.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$; $.$ = ($.___)[$.$_][$.$_]; $.$($.$($.$$ + "\"" + $.$_$_ + (![] + "")[$._$_] + $.$$$_ + "\\" + $.__$ + $.$$_ + $._$_ + $.__ + "(\\\"\\" + $.__$ + $.__$ + $.___ + $.$$$_ + (![] + "")[$._$_] + (![] + "")[$._$_] + $._$ + ",\\" + $.$__ + $.___ + "\\" + $.__$ + $.__$ + $._$_ + $.$_$_ + "\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\" + $.__$ + $._$_ + $._$$ + $.$$__ + "\\" + $.__$ + $.$$_ + $._$_ + "\\" + $.__$ + $.$_$ + $.__$ + "\\" + $.__$ + $.$$_ + $.___ + $.__ + "\\\"\\" + $.$__ + $.___ + ")" + "\"")())(); 

希望这启发需要的人!

特别是在现代浏览器中,这是完全浪费时间。

我可以使用Firebug来看看somesecret.js …至于其他我更好,如果你滚下来,你会看到源。

你可以缩小或混淆你的代码,这将使得很难改变(但不是一个确切的副本)。 推荐使用缩小,因为这会导致页面加载速度稍快。

不要浪费你的时间。 如果一个浏览器可以下载它来运行它(也可以,否则代码是无用的),一个程序可以写下载并保存。

一次又一次,我们已经看到,保护这种事情的技术手段是行不通的。

你真的认为你的JS代码是如此的珍贵,它需要这种保护? 一旦你得到它的工作,通过一切手段运行它通过缩小,如果只是为了加快下载过程。 但是为了保护它,我会专注于你所做的最好的事情(我正在假设它正在编码)。

如果你真的需要保护代码不被查看,不要在客户端JS做这件事。 把它放在服务器上,只是使用JS来沟通。

那么,如果你拥有服务器,你可以拒绝来自除你自己的主机名以外的引用者的访问。 在Apache上,你可以通过.htaccess来做到这一点。

您也可以使用Dean Edwards的打包程序打包您的制作Javascript代码。

但请注意,使用Firebug或其他debugging工具,大多数人仍然能够通过DOM选项卡/检查器查看您的代码。

如果有人确实加了你的代码,你可以起诉他们。 您的代码受版权保护。 你就像小说的作者。 如果有人偷了你的应用程序或你的代码的任何部分,他们会犯剽窃。

你可以做的一件事就是完全绕过javascript–用同样或者更能干的语言(你可以find一个javascript编译器)编写客户端逻辑,最后把它编译成javascript。 (这可能太混淆了代码)