非开源的js框架有没有方法阻止别人查看源码?
JavaScript再变相也是明文传播代码。又不可能像PHP的Zend加密那样要求用户的浏览器上有特定组件……所以JS加密无非只好使用这些minify/uglify/混淆代码逻辑等等这些小的手段。
但有一个重要的考虑因素是:代码能隐藏住,代码的逻辑藏不住。代码无论写成什么样子,代码做的事情用调试器一跟踪就出来。
JS的加密和破解就像是一场结束不了的军备竞赛。我的建议是:
有加密就有可逆~
个人感觉前端的脚本基本是公开的,虽然代码混淆能给阅读代码增加难度,但是在sublime这样的神器面前也会降低许多难度。如果是真的特别重要的核心商业机密,能交给后台服务器的尽量交给后台服务器吧。前端的重点作用是在展现,表现力更重要,前端用各种别人的东西比较多^_^做混淆的目的更多的是减小脚本的体积。。。
uglifyjs这类的混淆器,可以让代码变成很难读的样子,即使重新格式化,变量名也都变成了a,b,c,d这种。这种情况下要读懂已经有一定难度了,但别人要真正想逆向你的话,一样可以通过单步等手段来摸清你的代码执行流程,梳理出逻辑来。简单说就是不可能完全不让别人看到,只是让别人付出相当大的代价。
把所有 JavaScript 代码转换成零宽字符(或者其他一一对应字符),浏览器执行的时候,再用脚本把零宽字符转换成源码然后执行。查看源码在视觉上就消失了。
可是源码体积变大,也降低了脚本执行效率。安全性和稳定性可能也没有保障,具体还不太了解。从没看到有人这么做过。
简单说就是不可能完全不让别人看到,别人一样可以自己用脚本转换字符,让别人付出更大的代价同时也让自己付出代价..
前端代码估计没有加密之说
我想到的是只能用代码混淆,Javascript是client-side脚本,不能完全阻止查看源码。
另外,这个链接中提到的第一个方法算是防盗链了。后面又给出了一个链接,讲得貌似是将代码加密成一张图片,然后只支持现代浏览器(Modern Web Browsers),也是防君子不防小人的方法。
其实真的有Encode就Decode,所以说只要让别人破译密文花费的代价(远)大于获取到的明文的价值,这就成功了。
开卷源有益~
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(7)
JavaScript再变相也是明文传播代码。又不可能像PHP的Zend加密那样要求用户的浏览器上有特定组件……所以JS加密无非只好使用这些minify/uglify/混淆代码逻辑等等这些小的手段。
但有一个重要的考虑因素是:代码能隐藏住,代码的逻辑藏不住。代码无论写成什么样子,代码做的事情用调试器一跟踪就出来。
JS的加密和破解就像是一场结束不了的军备竞赛。我的建议是:
有加密就有可逆~
个人感觉前端的脚本基本是公开的,虽然代码混淆能给阅读代码增加难度,但是在sublime这样的神器面前也会降低许多难度。如果是真的特别重要的核心商业机密,能交给后台服务器的尽量交给后台服务器吧。前端的重点作用是在展现,表现力更重要,前端用各种别人的东西比较多^_^做混淆的目的更多的是减小脚本的体积。。。
uglifyjs这类的混淆器,可以让代码变成很难读的样子,即使重新格式化,变量名也都变成了a,b,c,d这种。
这种情况下要读懂已经有一定难度了,但别人要真正想逆向你的话,一样可以通过单步等手段来摸清你的代码执行流程,梳理出逻辑来。
简单说就是不可能完全不让别人看到,只是让别人付出相当大的代价。
把所有 JavaScript 代码转换成零宽字符(或者其他一一对应字符),
浏览器执行的时候,再用脚本把零宽字符转换成源码然后执行。
查看源码在视觉上就消失了。
可是源码体积变大,也降低了脚本执行效率。安全性和稳定性可能也没有保障,具体还不太了解。
从没看到有人这么做过。
简单说就是不可能完全不让别人看到,别人一样可以自己用脚本转换字符,让别人付出更大的代价同时也让自己付出代价..
前端代码估计没有加密之说
我想到的是只能用代码混淆,Javascript是client-side脚本,不能完全阻止查看源码。
另外,这个链接中提到的第一个方法算是防盗链了。后面又给出了一个链接,讲得貌似是将代码加密成一张图片,然后只支持现代浏览器(Modern Web Browsers),也是防君子不防小人的方法。
其实真的有Encode就Decode,所以说只要让别人破译密文花费的代价(远)大于获取到的明文的价值,这就成功了。
开
卷源有益~