脚本完成加载后隐藏源代码

时间:2013-02-20 23:34:18

标签: javascript client-side copy-protection data-protection

这个问题不同,因为我不想阻止用户查看来源。我想以编程方式隐藏部分源代码。 “重复”问题没有解决这个问题,这个问题的一些答案开始解决它。

是否可以在javascript中在脚本完成加载后隐藏代码?在限制性许可制度之外,我想保护我的剧本免受窥视。

我认为删除代码会禁用页面的任何交互部分,而不依赖于库。但人们/行业如何解决这个问题?

是否只是法院强制执照制度和版权登记?或者是否有更聪明的东西可以通过软件来完成客户端javascript

6 个答案:

答案 0 :(得分:2)

您无法在浏览器需要时隐藏所有源代码。想想firebug或dom检查员是如何工作的。如果您更改某些内容,则会影响您在浏览器屏幕中看到的内容。 但有一些方法可以使它“有点看不见”或“几乎不可读”。例如,如果您使用一些即时构建脚本的开发工具或脚本。

查看我的网站http://elmin.org并尝试阅读源代码。如您所见,您看不到太多,即使您看到,分析或理解也太复杂了。 在这种情况下,使用谷歌网络工具包。

如上所述,混淆代码是一种解决方案,但这还不够,因为虽然很难,但程序员可以破译你的代码并“窃取”你的脚本。

我想说一个想法是限制从嵌入代码的页面外部访问外部js文件。因此,如果有人试图在浏览器中访问该文件,则访问将被拒绝到脚本源。在php或您正在使用的任何服务器端语言中,您可以通过将request_uri服务器变量与您的域进行比较来控制访问。

但是您应该意识到混淆代码的风险。试想一下,它取代了一个清晰可读的JavaScript代码段:

window.onload = function() { alert("Hi " + username) };

由:

eval(unescape("var%20_0xc5b2%3D%5B%22onload%22%2C%22Hi%20%22%5D%3Bwindow"+
"%5B_0xc5b2%5B0%5D%5D%3Dfunction%20%28%29%7Balert%28_0xc5b2%5B1%5D+username"+
"%29%3B%7D%20%3B"));

风险是许多防病毒或其他在线保护软件可能会警告您的访问者它不安全,因为可能无法检测到javascript代码是否试图做有害的事情。因此,它可能无法通过验证。

答案 1 :(得分:1)

您将获得的最佳效果是使用像UglifyJS这样的缩放器。它会混淆代码并使人们更难阅读,但你无法隐藏它。您的所有代码都以纯文本形式传输到浏览器,以便它可以解释它,并且没有浏览器会阻止用户看到它。

答案 2 :(得分:1)

  

是否可以在javascript中在脚本完成后隐藏代码   装载

=>否

  

我认为删除代码会禁用任何交互式部分   离开静态shell的页面

=>您可以从html结构中删除脚本标记,但由于代码已经被解析,您的交互式部分仍然可以工作

  

是否有更聪明的东西可以在软件中完成   客户端javascript

=>接受人们可以阅读你的缩小代码,并且不会花费太多时间来破译它,因为他们已经拥有jQuery,骨干和其他库。把你宝贵的时间投入到更好的vnext而不是试图隐藏当前版本。

答案 3 :(得分:0)

执行后无法隐藏代码,但您可以轻松地对代码进行模糊处理。

答案 4 :(得分:0)

这是不可能的......或者即使有某种方式,它也会是一种偏差,因为对你的代码感兴趣的唯一人是程序员...所以他们只需加载你的页面执行js获取源... 对不起:/

“它会使代码混淆,让人们更难阅读” 大多数文本编辑器或Web浏览器都有语法高亮和缩进,因此它不是解决方案。(我误解了)是的,这是一个解决方案

答案 5 :(得分:0)

没有

这就是为什么PHP在这个意义上有一个主要优势 - 它是在服务器端执行 - 因此查看器永远不会看到产生结束标记的代码。但是不要误解我PHP有自己的安全问题,比如MySQL注入攻击。