我知道 100% 的保护是不可能的,但是对于大多数用户来说,高的或有效的东西是不可能的。
例如,我遇到了一个站点,在该站点中查看当前页面的源没有返回任何内容。
在另一种情况下,从浏览器访问或尝试下载 .js 文件本身
http://gget.com/somesecret.js,
会重定向你和东西。
如果你混淆你的代码,解码它会非常困难吗?如果是这样,那也是另一个很好的解决方案(推荐什么软件)?
我知道 100% 的保护是不可能的,但是对于大多数用户来说,高的或有效的东西是不可能的。
例如,我遇到了一个站点,在该站点中查看当前页面的源没有返回任何内容。
在另一种情况下,从浏览器访问或尝试下载 .js 文件本身
http://gget.com/somesecret.js,
会重定向你和东西。
如果你混淆你的代码,解码它会非常困难吗?如果是这样,那也是另一个很好的解决方案(推荐什么软件)?
这根本不可能。
为了让访问者的浏览器能够执行脚本,他们必须能够下载它。无论您尝试使用 JS、服务器权限等进行何种诡计,在一天结束时,它们始终只能使用wget http://example.com/yourcoolscript.js
. 即使他们不能(例如,您需要该请求的“秘密”标头),这也可能会抑制大多数浏览器的行为,同时不会阻止有决心的人进行查看。
从根本上说,由于 JS 是在客户端执行的,因此客户端必须有权访问“原始”JS 文件。
您可以做的一件小事是混淆,这会有所帮助。但是由于 JS 是被解释的,它也是它自己的反混淆器 - 请参阅我之前的答案之一作为示例。
基本上 - “如果你建造它,他们会看起来”。:-)
有两种用户:一种是不在乎的大群体。没有必要防范他们。
然后,有一群人真的很想看看你是怎么做到的。没有办法防范他们。他们拥有所有工具和知识来规避您可以提出的任何保护措施。你可以使用混淆,但这会花费你金钱和时间,所以最终你只能输。
创造一个伟大的产品并提供良好的支持,人们将愿意为此付费。城堡建造在过去并不顺利(付出了很多努力,只用了几块石头就可以把它们拆掉),今天肯定行不通了。
如果你担心你的想法会被盗,那就找一份新工作,因为他们会被盗,你无能为力。
您可以混淆您的 Javascript。在野外有很多工具可以做到这一点,例如http://www.javascriptobfuscator.com/。然而,它不会阻止任何人看到代码,但会使代码更难阅读。
如果您有大秘密,请将它们保存在服务器上。
然后将您所有的 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")
两个美化网站的输出:
$ = ~[];
$ = {
___: ++$,
$$$$: (![] + "")[$],
__$: ++$,
$_$_: (![] + "")[$],
_$_: ++$,
$_$$: ({} + "")[$],
$$_$: ($[$] + "")[$],
_$$: ++$,
$$$_: (!"" + "")[$],
$__: ++$,
$_$: ++$,
$$__: ({} + "")[$],
$$_: ++$,
$$$: ++$,
$___: ++$,
$__$: ++$
};
$.$_ = ($.$_ = $ + "")[$.$_$] + ($._$ = $.$_[$.__$]) + ($.$$ = ($.$ + "")[$.__$]) + ((!$) + "")[$._$$] + ($.__ = $.$_[$.$$_]) + ($.$ = (!"" + "")[$.__$]) + ($._ = (!"" + "")[$._$_]) + $.$_[$.$_$] + $.__ + $._$ + $.$;
$.$$ = $.$ + (!"" + "")[$._$$] + $.__ + $._ + $.$ + $.$$;
$.$ = ($.___)[$.$_][$.$_];
$.$($.$($.$$ + "\"" + $.$_$_ + (![] + "")[$._$_] + $.$$$_ + "\\" + $.__$ + $.$$_ + $._$_ + $.__ + "(\\\"\\" + $.__$ + $.__$ + $.___ + $.$$$_ + (![] + "")[$._$_] + (![] + "")[$._$_] + $._$ + ",\\" + $.$__ + $.___ + "\\" + $.__$ + $.__$ + $._$_ + $.$_$_ + "\\" + $.__$ + $.$$_ + $.$$_ + $.$_$_ + "\\" + $.__$ + $._$_ + $._$$ + $.$$__ + "\\" + $.__$ + $.$$_ + $._$_ + "\\" + $.__$ + $.$_$ + $.__$ + "\\" + $.__$ + $.$$_ + $.___ + $.__ + "\\\"\\" + $.$__ + $.___ + ")" + "\"")())();
希望对有需要的人有所启发!