我刚开始使用Java ScriptEngine对我的应用程序进行一些扩展,然后我注意到我可以导入脚本中的所有java类并且不受限制地使用它们.有没有办法指定脚本可以使用哪些类?我不希望他们做像这样的事情java.lang.System.exit(1);
目前我正在尝试编写Sandbox来运行不受信任的Java代码.我们的想法是将Java应用程序与访问文件系统或网络套接字隔离开来.我目前的解决方案是重写了SecurityManager,禁止对IO或网络的任何访问.
现在我不想禁止,但是要将调用重定向到文件系统,即如果应用程序想要写入"/home/user/application.txt",则文件的路径应替换为"/ temp/trusted_folder /"之类的内容. application.txt".所以基本上我想允许应用程序仅在某个特定文件夹中访问文件系统,并将所有其他调用重定向到此文件夹.
所以这里是来自FileOutputStream类的方法,其中询问SM,是否有写入给定路径的权限.
public FileOutputStream(File file, boolean append)
throws FileNotFoundException
{
String name = (file != null ? file.getPath() : null);
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkWrite(name);
}
if (name == null) {
throw new NullPointerException();
}
fd = new FileDescriptor();
fd.incrementAndGetUseCount();
this.append = append;
if (append) {
openAppend(name);
} else {
open(name);
}
}
Run Code Online (Sandbox Code Playgroud)
显然,SM不能访问FileOutputStream并且不能更改方法中的内部变量(如名称或文件)或以某种方式影响执行顺序,除了抛出SecurityException.我明白,访问内部字段违反了面向对象的原则,我明白,局部变量是可见的,只存在于声明它们的方法中.
所以我的问题是:有没有办法让Security Manager替换对文件系统的调用?如果没有,我可以使用任何其他方法来做到这一点吗?
我希望我很清楚.
我对沙盒有点困惑.这可能吗?
谢谢!
我可以将字符串生成的函数(使用Function构造函数)的访问权限限制为父/全局范围吗?
例如:以下代码按原样打印为false,因为该函数正在窗口中存储/修改变量a.
window.a = 4;
Function("a=3;")()
console.log(a === 4);
Run Code Online (Sandbox Code Playgroud)
我可以限制对窗口/父作用域的访问并使其打印为"true"吗?
问:有没有办法沙盒Go程序?
答:是的.参见GAE w/Go或play.golang.org
这是怎么做到的?
在我的特定情况下,我想允许用Go编写的不受信任的扩展.我想Go Goground正是我所需要的.它是开源的吗?或者至少有一些关于如何构建类似服务的文档?
code.google.com/p/go-playground是Go Playground编辑器的源代码.但沙箱隐藏在POST后面http://golang.org/compile?output=json.
我试图用来- (NSURL *)containerURLForSecurityApplicationGroupIdentifier:(NSString *)groupIdentifier在iOS 8 b4上的容器应用程序和扩展程序之间保存/加载文件.
这是代码:
NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:groupID];
containerURL = [containerURL URLByAppendingPathComponent:[NSString stringWithFormat:@"Library/Caches/test.txt"]];
NSString* string = @"hihihihihi";
NSError* error;
[string writeToURL:containerURL atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"%@",error);
Run Code Online (Sandbox Code Playgroud)
我将此代码放在扩展(自定义键盘)和容器应用程序中.当我在iOS模拟器上运行它时,它们都可以成功保存文件.但是在iOS设备上,扩展程序无法保存文件(而容器应用程序仍然可以)
当扩展程序试图保存文件时,控制台显示可可错误513.
2014-07-31 01:37:49.316 TestExtention [2359:288820] Error Domain = NSCocoaErrorDomain Code = 513"无法完成操作.(Cocoa error 513.)"UserInfo = 0x15df2100 {NSFilePath =/private/var/mobile/Containers/Shared/AppGroup/4FA2DA5E-89C3-4BC3-AA5B-DD869827C5E7/Library/Caches/test.txt,NSUnderlyingError = 0x15df1d90"操作无法完成.操作不允许"}
这是iOS 8扩展的限制吗?
我曾经用过iframe一些页面adobe flash.这些页面可能包含像视频这样的内容.我的问题是abode flash不在iframesandbox属性中执行.我的iframe标签:
<iframe sandbox="allow-popups allow-pointer-lock allow-same-origin allow-forms allow-scripts" src="http://example.com"></iframe>
Run Code Online (Sandbox Code Playgroud) Haskell新手和Python家伙在这里.
我想我可能会在这里遗漏一些东西但是如果你看看Yesod的快速启动,那么autor 之前会 安装一些软件包cabal sandbox init.我在其他地方看到过相同的模式.问题:
cabal sandbox init不更改PATH以匹配沙盒版本?非常感谢你提前!
我目前正在测试一个站点/门户网站.我们的网站旨在授予用户访问Instagram上自己的图片.
我们的代码在沙盒模式下能够有效地工作.但是,Instagram拒绝了我们的批准,从沙盒切换到实时..原因尚不清楚 "您的提交说明,截屏和网站中描述的用例不是我们在平台上允许的有效用例" ..并且几乎没有机会重新提交.
有没有相关联系Instagram?或者它是如何工作的?我是否会邀请另一个沙箱,希望我能做对吗?任何建议将被认真考虑.
问候