对未签名的 Java 小程序可以做啥的限制?

Posted

技术标签:

【中文标题】对未签名的 Java 小程序可以做啥的限制?【英文标题】:Restrictions on what an unsigned Java applet can do?对未签名的 Java 小程序可以做什么的限制? 【发布时间】:2009-09-27 13:37:02 【问题描述】:

我正在尝试编译对未签名 Java 小程序的所有限制的完整列表(定义为普通 Java 应用程序可以做的事情,但未签名的 Java 小程序不能做)。

这是我目前整理的清单:

一个未签名的 Java 小程序 ...

    无法访问本地文件系统。 无法访问系统剪贴板。 无法启动打印作业。 无法连接到任何第三方服务器(不是小程序源自的服务器之外的任何服务器)或从其检索资源。 不能使用多播套接字。 无法创建或注册SocketImplFactoryURLStreamHandlerFactoryContentHandlerFactory。 无法侦听传入的套接字连接。 无法侦听数据报。 无法访问某些系统属性(java.class.path、java.home、user.dir、user.home、user.name)。 无法创建或注册SecurityManager 对象。 无法使用RuntimeSystemload()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 小程序可以做啥的限制?的主要内容,如果未能解决你的问题,请参考以下文章

脚本是啥意思,是做啥的啊?

Java中ModelAndView是做啥的?

Java程序中,做东西需要分层打包,一下几个包是啥意思,主要是做啥的?

hadoop是做啥的?

小程序能做啥和不能做啥

spring是做啥的?怎么用?