当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何防止您的JavaScript代码被盗,被复制和查看?》经验,为你挑选了7个好方法。

我知道它不可能实现100%的保护,但是对于大多数用户来说,它可以是高效的.

例如,我遇到了一个查看当前页面源的网站没有返回任何内容.

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

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

会重定向你和东西.

如果您对代码进行模糊处理,解码它会非常困难吗?如果这样也是另一个好的解决方案(建议使用什么软件)?



1> Andrzej Doyl..:

这根本不可能.

要使访问者的浏览器能够执行脚本,他们必须能够下载它.无论你试图用JS,服务器权限等提供什么技巧,在一天结束时他们总是可以wget http://example.com/yourcoolscript.js.即使他们不能(例如你需要"秘密"标题用于该请求),这可能会抑制大多数浏览器的行为,同时也不会阻止一个坚定的人观看.

从根本上说,因为JS是在客户端执行的,所以客户端必须能够访问"原始"JS文件.

你可以做的一件小事是混淆,这可以帮助一点点.但是,由于JS被解释,它也是它自己的反混淆器 - 请参阅我之前的一个例子.

基本上 - "如果你建造它,它们会看起来".:-)


可以在浏览器和服务器之间放置一些TCP/IP侦听器,您可以使用它们查看在它们之间进行通信的HTML和JavaScript.所以"秘密标题"并没有什么好处.

2> Aaron Digull..:

有两种用户:有一大群人不在乎.无需保护他们.

然后,有一群人真的想看看你是怎么做到的.没有办法保护他们.他们拥有所有工具和知识,可以规避您可以提出的任何保护措施.你可以使用混淆,但这会花费你的金钱和时间,所以最后,你只能输.

创造一个伟大的产品加上提供良好的支持,人们愿意为此付出代价.城堡建筑在过去并没有很好地运作(很多努力,它只需要几块石头就可以将它们拆除)而且它今天肯定不起作用.

如果你担心自己的想法会被盗,那就找一份新工作吧,因为他们会这样做,你无能为力.



3> spa..:

你可以混淆你的Javascript.野外有很多工具可以做,例如http://www.javascriptobfuscator.com/.但是,它不会阻止任何人查看代码,但会使其更难阅读.



4> Mic..:

如果您有大秘密,请将它们保存在服务器上.

然后将所有JS文件捆绑在一个文件中,然后进行模糊处理.
这应该可以防止许多人走得更远,并且还可以减少大小和http调用.
但这不会阻止真正的坏人,如果有的话.

我们正在构建一个JS重型应用程序并且很久以前就已经治愈了这种偏执狂.
事实上,我们做了相反的事情.

由于没有什么可以保护,为什么不开源有用的部分并获得其他人的反馈?
试试吧,你不会失望的.



5> Marcelo Rodo..:

一个想法是使用websockets通过socket.listener和运行javascript文件到浏览器eval.这样,任何人都很难看到实际的"源",因为套接字的连接已经关闭.

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

如果您查看源代码,您只能看到一行实际的JS代码:http: //pastebin.com/e0pqJ8sB 如果您能弄清楚它是如何工作的话,请亲自看看(没有剧透!)

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

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

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

原始代码:

alert("Hello, JavaScript")

两个美化网站的输出:

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

希望这启发那些有需要的人!


@MarceloRodovalho我用ctrl + s保存了整个页面!

6> Greg..:

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

我可以使用Firebug来查看somesecret.js ...至于另一个我更好,如果你向下滚动你会看到来源.

您可以缩小或混淆您的代码,这将使其难以更改(但不能采取精确的副本).建议缩小,因为它会导致页面加载速度稍快.



7> paxdiablo..:

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

一次又一次,我们已经看到保护这样的东西的技术方法不起作用.

你真的认为你的JS代码是如此珍贵,以至于它需要那种保护吗?一旦你使它工作,一定要通过minifier运行它,如果只是为了加快下载过程.但至于保护它,我会专注于你最擅长的(我假设是编码).

如果您确实需要保护代码不被查看,请不要在客户端JS中执行此操作.把它放在服务器上,然后使用JS与之通信.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有