Tag: 沙箱

限制嵌入式Groovy中的某些API

我只是在我的应用程序中嵌入了Groovy,并想知道是否可以限制对某些API的访问,即java.io.File,java.net.URL等 或者不是完全限制java.io.File访问,我想只允许访问机器上的某些目录。 非常感谢任何指导!

Java Applet沙箱安全性,本地访问和外部访问

我的(代码签名)java applet中存在一个错误“访问被拒绝(java.net.SocketPermission xxxx:443 connect_resolve。”我们有一个html“保存”按钮,它正在调用(通过javascript)applet方法来保存文件,加载到小程序中,进入网络服务器。经过一些广泛的谷歌研究,我通过在doPrivileged()中包装我们的小程序的保存方法代码来修复它。错误似乎是固定的,人们很高兴。 我想确认我完全理解我应用的原始情况和解决方案(倒退,我知道,但转身时间不允许我真正研究这个问题)。 特别让我感到困惑的是,我们在内部网络中的测试服务器上广泛测试了我们的applet,直到我们从网络外部的客户端计算机上尝试javascript“保存”按钮之前,才发现此错误。 所以在这一点上,我只是做了一个有根据的猜测:这就是java applet沙箱机制的工作原理。 这是真的? 只要客户端小程序从位于同一域网络中的客户端计算机访问Web服务器资源,它就被视为在沙箱墙内? 如果客户端计算机位于Web服务器的本地网络外部,则applet请求被认为是在沙箱墙之外并且需要doPrivileged? 还是在这里有另一种解释我错过了? 我无法在sun的文档中找到任何内容,也没有通过google查找具体certificate或反驳我断言的内容。 非常感谢来自具有更多java applet经验的人的澄清

Google App Engine沙盒如何运作?

Google App Engine沙盒如何运作? 我需要做些什么来创建我自己的沙盒(为了安全地允许我的客户在我的引擎上运行他们的应用程序而不让他们能够格式化我的磁盘驱动器)? 它只是类加载器魔术,字节操作或什么?

Rhino:限制可以从JavaScript访问的Java包

将JavaScript解释器(Rhino)嵌入Java应用程序(能够编写该应用程序的脚本)时,如何限制脚本可用的Java包? 例如,只能访问“java.lang。*”。

沙盒JVM可以保护服务器不受信任的来源

在接受和执行上传的,不受信任的代码时,如何保护我的服务器免受恶意活动的影响? 用户应该能够实现我的界面和给定的数据,执行一些计算并返回数据。 不需要I / O操作,当然也没有线程/进程操作或其他操作。 使用java.policy文件可以拒绝所有内容(通过不授予任何内容)。 $ cat test.policy grant { }; 使用此策略文件,未授予的操作将导致安全性exception。 $ cat Print.java public class Print { public static void main(String a[]) throws Exception { System.out.println(System.getProperty(“os.name”)); } } $ javac Print.java $ java -Djava.security.manager -Djava.security.policy==test.policy Print Exception in thread “main” java.security.AccessControlException: access denied (java.util.PropertyPermission os.name read) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) […]

你可以签署一个Java applet但是把它保存在沙箱中(不能让它完全访问用户的计算机)?

由于Oracle的最新更改,我似乎必须签署一个applet,即使我不需要或希望它可以无限制地访问用户的计算机(这就是它当前未签名的原因)。 特别是,我不希望他们为已签名的applet显示警告: 此应用程序将以不受限制的访问方式运行,这可能会使您的计算机和个人信息面临风险。 ……这将吓唬使用它的人。 是否有可能签署一个小程序,但以某种方式标记它说“但继续使用沙箱”? 我签署它的唯一原因是从版本7更新40开始,Oracle进一步增加了用户在运行未签名的applet时必须处理的唠叨。 过去,您可以选中一个表示您信任applet一次的框,这将被记住。 从Update 40开始,它只记得该浏览器会话; 如果您关闭浏览器并稍后返回,则会再次出现警告。 他们还说他们将完全在Java插件的“未来版本”中禁用未签名的applet。

根据安全策略创建java沙箱

我需要创建环境来运行可能不受信任的代码。 程序允许连接到预配置的地址:端口,没有别的(甚至读取系统时间)。 我编译了类白名单。 我搜索过类似的问题,但只找到了基于SecurityManager的模板,其中AFAIK已被弃用。 任何人都可以给我一个简单的示例,了解如何基于安全策略和AccessController在沙箱中运行代码?

Java ScriptEngine的安全问题

我刚刚开始使用Java ScriptEngine对我的应用程序进行一些扩展,然后我注意到我可以导入脚本中的所有java类并使用它们而没有任何限制。 有没有办法指定脚本可以使用哪些类? 我不希望他们做像java.lang.System.exit(1);

禁用当前线程的Javareflection

我需要调用一些半可信赖的Java代码,并希望禁用在代码执行期间使用reflection的能力。 try{ // disable reflection somehow someObject.method(); } finally{ // enable reflection again } 可以使用SecurityManager来完成,如果是这样,怎么做? 澄清/上下文:这是关于限制可以从JavaScript / Rhino调用的包的另一个问题的后续行动。 接受的答案引用了关于如何做到这一点的博客条目,它需要两个步骤,第一个使用Rhino API(ClassShutter),第二个关闭reflection和Class.forName()。 我想我可以使用SecurityManager更干净地完成第二步(了解SecurityManager,正如已经指出的那样,它是一个复杂的野兽,一路走来)。 总而言之,我希望(从代码,而不是设置文件)关闭Class.forName()以及对整个reflection包的任何访问。