1

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

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

我认为删除代码将禁用页面的任何交互部分,离开静态外壳,具体取决于库。但是人们/行业如何解决这个问题?

它只是法院强制执行的许可制度和版权登记吗?或者有什么更聪明的东西可以在关于客户端javascript的软件中完成

4

6 回答 6

2

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

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

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

我想说一个想法是限制从您嵌入代码的页面之外访问您的外部 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 代码是否试图做一些有害的事情。因此,它可能无法通过验证。

于 2013-02-20T23:45:20.003 回答
1

你会得到的最好的结果是使用像UglifyJS这样的缩小器。它会混淆代码并使人们更难阅读,但你不能隐藏它。您的所有代码都以纯文本格式传输到浏览器,因此它可以解释它,并且没有浏览器会阻止用户看到它。

于 2013-02-20T23:37:11.527 回答
1

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

=> 没有

我认为删除代码会禁用页面的任何交互部分,留下静态外壳

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

有没有更聪明的东西可以在关于客户端 javascript 的软件中完成

=> 接受人们可以阅读您的缩小代码并且不会花太多时间尝试破译它,因为无论如何他们已经拥有 jQuery、主干和其他库。将宝贵的时间投入到更好的 vnext 上,而不是试图隐藏当前版本。

于 2013-02-21T00:31:25.013 回答
0

这是不可能的......或者即使有办法,它也会是部分的,因为唯一对你的代码感兴趣的人是程序员......所以他们只需要加载你的页面而不执行js来获取来源...对不起:/

“它会混淆代码并使人们更难阅读” 大多数文本编辑器或网络浏览器都有语法突出显示和缩进,所以这不是一个解决方案。(我误解了)是的,这是一个解决方案

于 2013-02-20T23:40:53.973 回答
0

不。

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

于 2013-02-20T23:46:29.927 回答
0

执行后无法隐藏代码,但您可以轻松混淆它。

于 2013-02-20T23:37:18.740 回答