未签名的 Java 小程序的功能有何限制?
我正在尝试编译对未签名的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)。
问题:是否缺少任何限制?如果是这样,请明确说明您认为列表中缺少哪些限制。
I'm trying to compile a complete list of all restrictions placed on unsigned Java applets (defined as things a normal Java application can do, but an unsigned Java applet cannot).
This is the list I've compiled so far:
An unsigned Java applet ...
- Cannot access the local filesystem.
- Cannot access the system clipboard.
- Cannot initiate a print job.
- Cannot connect to or retrieve resources from any third party server (any server other than the server the applet originated from).
- Cannot use multicast sockets.
- Cannot create or register a
SocketImplFactory
,URLStreamHandlerFactory
, orContentHandlerFactory
. - Cannot listen to incoming socket connections.
- Cannot listen for datagrams.
- Cannot access some of the system properties (java.class.path, java.home, user.dir, user.home, user.name).
- Cannot create or register a
SecurityManager
object. - Cannot dynamically load native code libraries with the
load()
orloadLibrary()
methods ofRuntime
orSystem
. - Cannot spawn new processes by calling any of the
Runtime.exec()
methods. - Cannot create or access threads or thread groups outside of the thread group in which the untrusted code is running.
- Cannot define classes in
java.*
,sun.*
andnetscape.*
. - Cannot explicitly load classes from the
sun.*
package. - Cannot exit the Java runtime by calling
System.exit()
orRuntime.exit()
. - Cannot access the system event queue.
- Cannot use the
java.lang.Class
reflection methods to obtain information about nonpublic members of a class, unless the class was loaded from the same host as the untrusted code. - Cannot manipulate security identities in any way (java.security).
- Cannot set or read security properties (java.security).
- Cannot list, look up, insert, or remove security providers (java.security).
Question: Are there any restrictions missing? If so, please clearly state what restriction you believe is missing from the list.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此外,您无法注册 UncaughtExceptionHandler。
Also you cannot register an
UncaughtExceptionHandler
.请参阅 Sun 的教程:Applet 可以做什么和不能做什么 。
See this from Sun's tutorial: What Applets Can and Cannot Do.