【发布时间】:2017-09-19 21:36:10
【问题描述】:
HTML5 代码可以通过“检查元素”轻松查看或从“来源”检索。
我想知道是否有任何方法可以在浏览器的客户端完全隐藏 Web 应用程序的代码。
欢迎使用所有语言,因此可以接受嵌入应用程序(例如 Java Applet)。有什么聪明的方法可以解决这个问题吗?
【问题讨论】:
-
后端代码是的。前端代码号但是,有一些方法可以使前端代码更难理解(缩小、混淆等)
HTML5 代码可以通过“检查元素”轻松查看或从“来源”检索。
我想知道是否有任何方法可以在浏览器的客户端完全隐藏 Web 应用程序的代码。
欢迎使用所有语言,因此可以接受嵌入应用程序(例如 Java Applet)。有什么聪明的方法可以解决这个问题吗?
【问题讨论】:
使用面向服务器端的 Web 应用程序框架,例如 Vaadin,其中您的业务逻辑仅存在于完全用 Java 编写的服务器上,而框架会自动生成必要的 HTML、CSS、JavaScript、DOM、AJAX 和 WebSocket 代码在 Web 浏览器中进行演示可以让您对关键代码进行大量屏蔽。
任何用户都可以看到自动生成的 HTML 和 JavaScript 等,但意义不大。
黑客将能够操纵该客户端代码,但不会做太多事情。例如,黑客可以更改定义弹出菜单中值的 HTML/JavaScript 以添加另一个意外项目。但是服务器上的 Java 代码可以检查意外值并处理错误或抛出异常。
Vaadin 执行完整性测试以验证客户端和服务器是否保持“同步”。破解客户端代码可能会迅速使它们失去同步。
【讨论】:
完全隐藏前端代码是不可能的,因为用户的浏览器必须能够读取代码才能执行它。这个问题不仅限于网络。甚至本机二进制文件也可以使用 disassembler 进行检查 - 同样,用户的 CPU 必须能够解释代码,因此足够熟练的攻击者也可以解释它。
也就是说,混淆代码会使代码更难阅读。 JavaScript 在投入生产之前通常会被缩小——主要是出于性能原因。这还提供了一个基本的功能隐藏级别,以防止技术欠佳或动机不足的攻击者。 Google's list of minifiy resources 可能是一个不错的起点。
【讨论】: