【问题标题】:Security policy on Applets小程序的安全策略
【发布时间】:2014-01-28 20:15:43
【问题描述】:

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

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

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

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

我真的不明白正确的产品应该是什么,

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

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

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

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

谢谢

【问题讨论】:

    标签: java security applet


    【解决方案1】:

    行为取决于 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

    【讨论】:

    • 谢谢。对我有用的是在我的类上实现 PrivilegedAction 并执行 AccessController.doPrivileged()。
    • “沙盒”权限通常不足以违反同源策略。支持有限形式的 crossdomain.xml,但我认为这对 google.com 的政策没有任何用处。
    【解决方案2】:

    我在这里回答类似的问题: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 用于签名的 jars/applet。但是你可以使用它,它只是一个小程序描述符,你可以从任何地方执行它,就像你的桌面一样。

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

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

    cy@.

    【讨论】:

    • 使用 policytool 并不能解决问题,因为您无法将其部署为解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 2019-11-26
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2021-10-13
    • 2013-10-12
    相关资源
    最近更新 更多