Applet/Web Start 安全性

Posted

技术标签:

【中文标题】Applet/Web Start 安全性【英文标题】:Applet/Web Start securtiy 【发布时间】:2013-06-03 18:00:44 【问题描述】:

我对使用 Web Start 部署的 Applet 和应用程序的安全性感到非常困惑。

我的问题是,我应该更新策略文件还是创建用户定义的策略文件,

    签署我的 Applet 的 jar 文件以访问客户端资源,例如保存和读取文件?

    使用 JNLP 并签署我的应用程序的 jar 文件以使用 web start 进行部署?

    另外,什么时候应该扩展 SecurityManager 类并使用我自己的安全管理器?

我在互联网上看到了一些例子,其中有人提到更新策略文件或创建用户定义的策略文件并使安全管理器使用此用户定义的策略文件或将其用作部分 JVM 参数.....不是确定那是什么意思!

【问题讨论】:

“我应该更新策略文件还是创建用户定义的策略文件” 不。根本不要碰策略文件。对小程序 Jar 进行数字签名。 @Andrew...甚至不创建与默认策略文件不同的用户定义策略文件? “甚至不创建用户定义的策略” 那时不会,永远不会。 @AndrewThompson...所以只需签署 jar 文件(用于小程序),我就可以执行默认限制操作,例如从用户计算机读取和复制? 对 jar 签名是执行受限操作的必要条件之一——但这不是充分条件。 【参考方案1】:

作为 Applet 或 Web Start 应用程序的开发人员,您永远不应该接触策略文件。 策略文件是一种工具,它允许机器管理员强制执行为此机器定义的安全策略。作为小程序的开发人员,您甚至可能不知道这些策略。 通过依赖更新的政策文件,您将迫使您的客户根据您的需要更改他们的政策。

作为开发人员,您只能对这些限制做出反应,但不能更改它们。 当然,可能的反应可能是拒绝执行并打印一条消息,指示应用程序在给定的限制下无法执行。

【讨论】:

@mschenk74...感谢您的回复。那么我们什么时候应该扩展 SecurityManager 类呢? “扩展 SecurityManager 类”是什么意思?您想减少限制吗?然后,答案也是“不要这样做”——具有几乎相同的论据:SecurityManager 是执行定义的安全策略的类。如果您想添加更多限制,则自定义 SecurityManager 可能是实现此目的的一个组件。

以上是关于Applet/Web Start 安全性的主要内容,如果未能解决你的问题,请参考以下文章

在此类的对象上调用 start() 是不是安全? Java Concurrency in practice 的一个例子

Asp.Net Mvc - 将事物存储在在 Application_Start 中重新初始化的静态变量中是不是安全

java 多线程-线程不安全案例

线程安全的单例模式

在这个类的对象上调用start()是否安全? Java Concurrency实践中的一个例子

线程数据不安全现象