将.jar加载到网页上,用户无法访问它

时间:2011-10-16 20:41:42

标签: java web-applications jar

有点难以在一行中解释,但我的问题基本上是这样的:

我创建了一个java applet,我想在一个打包成.jar文件的网页上运行。我可以使用< applet>让applet正常工作。标签,但问题是,如果用户查看页面源,他们将看到:

<applet archive="directory/program.jar">

假设.jar文件可以轻松打开并且所有类文件都被反编译,所有用户必须要做的就是访问www.url.com/directory/program.jar下载我的.jar,他们会拥有我的所有文件源代码 :(

所以我想知道是否有一种方法来保护我的代码/ jar不被反编译(除了混淆)或使用某种服务器端脚本从服务器直接将.jar的内容提供给浏览器 - 公共场所不公开可见。

任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:4)

这根本不可能。

Java applet运行客户端 客户端上运行的任何内容都可以由足够高级的用户进行反汇编和修改。

您应该将敏感逻辑移动到服务器并使用HTTP请求调用它(并记住用户可以使用Fiddler)。
当你在这里时,你应该用HTML和Javascript替换你的applet。

答案 1 :(得分:0)

没有有效的方法来阻止访问任何页面的源代码;为了使浏览器和搜索引擎可以读取页面,源代码必须是可访问的,因此可以查看和/或复制。这就是网络的运作方式。 HTML作为文本文档发送并在客户端解释。

禁用右键单击只不过是一种烦恼,而且它在其他浏览器中偶尔会起作用。即使您成功,菜单中的“查看源”选项也始终存在。观看者还可以使用Wget等下载工具,甚至可以从Google缓存中获取该页面,而无需访问您的网站。

编辑:哎呀!我误解了你的问题。您应该按照@SLaks建议和“将敏感逻辑移动到服务器并使用HTTP请求调用(并记住用户可以使用Fiddler)。”

答案 2 :(得分:0)

除了混淆或加密之外,浏览器无论是哪种方式都可以访问jar。

您可以创建一个在运行时加载更多功能的小程序。

答案 3 :(得分:0)

虽然量子力学确实统治了宇宙,但它们对你的代码的控制力却比你想象的要少。您既不能将代码部署到客户端浏览器,也不能将代码部署到客户端浏览器。你可以选择做其中一个。

您可以通过将其定位到WAR文件中的WEB-INF目录下来阻止直接浏览到.jar文件。这也会阻止<applet archive="directory/program.jar">工作。

一旦jar位于WEB-INF目录下,您将需要一些东西将资源提供给客户端浏览器; Spring资源servlet对此很有用(如果你使用的是Java和Spring)。我确信存在其他此类工具。使用Sprint resours servlet,您可以使用以下内容部署applet:<applet archive="resource/program.jar"

如果您编写自己的资源分配器,则可以添加安全性以使得更难获取jar文件;也许为IRGud: <user_id here>之类的请求添加一个标题,并使任何没有该标题的请求(或标题中的可接受内容)失败。