对未签名的 Java 小程序可以做啥的限制?
Posted
技术标签:
【中文标题】对未签名的 Java 小程序可以做啥的限制?【英文标题】:Restrictions on what an unsigned Java applet can do?对未签名的 Java 小程序可以做什么的限制? 【发布时间】:2009-09-27 13:37:02 【问题描述】:我正在尝试编译对未签名 Java 小程序的所有限制的完整列表(定义为普通 Java 应用程序可以做的事情,但未签名的 Java 小程序不能做)。
这是我目前整理的清单:
一个未签名的 Java 小程序 ...
-
无法访问本地文件系统。
无法访问系统剪贴板。
无法启动打印作业。
无法连接到任何第三方服务器(不是小程序源自的服务器之外的任何服务器)或从其检索资源。
不能使用多播套接字。
无法创建或注册
SocketImplFactory
、URLStreamHandlerFactory
或ContentHandlerFactory
。
无法侦听传入的套接字连接。
无法侦听数据报。
无法访问某些系统属性(java.class.path、java.home、user.dir、user.home、user.name)。
无法创建或注册SecurityManager
对象。
无法使用Runtime
或System
的load()
或loadLibrary()
方法动态加载本机代码库。
无法通过调用任何 Runtime.exec()
方法来生成新进程。
无法在运行不受信任的代码的线程组之外创建或访问线程或线程组。
无法在java.*
、sun.*
和netscape.*
中定义类。
无法从sun.*
包中显式加载类。
无法通过调用 System.exit()
或 Runtime.exit()
退出 Java 运行时。
无法访问系统事件队列。
不能使用java.lang.Class
反射方法来获取有关类的非公共成员的信息,除非该类是从与不受信任的代码相同的主机加载的。
不能以任何方式操纵安全身份 (java.security)。
无法设置或读取安全属性 (java.security)。
无法列出、查找、插入或删除安全提供程序 (java.security)。
问题:是否缺少任何限制?如果是这样,请明确说明您认为列表中缺少哪些限制。
【问题讨论】:
小程序(从 6u10 开始)可以使用 JNLP API 访问本地文件系统(在用户的控制下)。系统剪贴板在特定条件下可用。如果应用程序尝试打印,则会显示一个确认对话框。跨域支持允许在服务器许可的情况下访问 Web 服务器。可以监听服务器套接字,但只能接受来自同一个来源。没有程序可以在java.*
中定义类,但我相信小程序可以在sun.*
中定义它们(只是没有用处)。小程序的事件队列是可访问的。反射基于 Java (1.0) 语言访问。
你是从某个地方得到那个列表的吗?如果你真的想要完整的检查列表,你可以在源代码中 grep for SecurityManager
,尽管这不会涵盖任何扩展库限制..
Tom:这份清单是网络上类似的不完整清单的汇编。
【参考方案1】:
请参阅 Sun 的教程:What Applets Can and Cannot Do。
【讨论】:
【参考方案2】:您也不能注册UncaughtExceptionHandler
。
【讨论】:
以上是关于对未签名的 Java 小程序可以做啥的限制?的主要内容,如果未能解决你的问题,请参考以下文章