Applet上的安全策略

时间:2014-01-28 20:15:43

标签: java security applet

我想编写一个需要特殊安全权限的applet,即:网络访问以对网站进行http GET。

我自己签了小程序,并用这个结果做了一个简单的测试:

  

java.security.AccessControlException:访问被拒绝   (“java.net.SocketPermission”“www.google.com:80”“connect,resolve”)

我还尝试在清单文件中添加安全策略,但没有运气。

我真的不明白什么是正确的生产,

  • 我应该在jar中使用策略文件吗?究竟应该在哪里?

  • 我应该在HTML上的APPLET标记上放置一些策略定义吗?

  • 我应该在代码中做些什么来请求权限/权限吗?

  • 我应该使用像JNLP这样的其他启动方法吗?这有什么不同吗?

由于

2 个答案:

答案 0 :(得分:0)

行为取决于Java版本。从java 7u51开始,需要使用有效证书(不是自签名)签署jws和applet。 http://www.oracle.com/technetwork/java/javase/7u51-relnotes-2085002.html#newft 沙箱和所有权限只有两个安全级别。必须在清单和jnlp文件中指定属性权限。要执行http请求沙箱就足够了。阅读这篇文章http://docs.oracle.com/javase/tutorial/deployment/applet/security.html

答案 1 :(得分:0)

我在这里回答类似的问题:Warning on Permissions attribute when running an applet with JRE 7u45

您需要制作正确的清单文件。或者您使用命令行

jar ufm jarfile.jar confmanifest.txt

或者你使用maven。(Simpliest way to add an attribute to a jar Manifest in Maven

在您的清单中,您将编辑其所需的权限(套接字,文件等)及其codBase。(跨域和安全目的)

然后,为了在没有真正的CA签名证书的情况下在本地运行,您需要使用policytool

编辑您的jvm java.policy文件

JNLP用于签名的jar / applets。但你可以使用它,它只是一个applet描述符,你可以从任何地方执行它,就像桌面一样。

使用HTML5,您应该使用<object>标记。我更喜欢通过javascript部署applet并使用javascript方法调用applet方法。

请参阅http://docs.oracle.com/javase/tutorial/deployment/applet/invokingAppletMethodsFromJavaScript.html

CY @