我需要调用一些半可靠的Java代码,并希望禁用在代码执行期间使用反射的功能.
try{
// disable reflection somehow
someObject.method();
}
finally{
// enable reflection again
}
Run Code Online (Sandbox Code Playgroud)
可以使用SecurityManager来完成,如果是这样,怎么做?
澄清/上下文:这是关于限制可以从JavaScript/Rhino调用的包的另一个问题的后续行动.接受的答案引用了关于如何做到这一点的博客条目,它需要两个步骤,第一个使用Rhino API(ClassShutter),第二个使用关闭反射和Class.forName().我想我可以使用SecurityManager更干净地完成第二步(了解SecurityManager,正如已经指出的那样,沿途是一个复杂的野兽).
总而言之,我希望(从代码,而不是设置文件)关闭Class.forName()以及对整个反射包的任何访问.
我想创建一个在本地运行其他人代码的Web服务...当然,我想限制他们对某些"sandbox"目录的代码访问,并且他们将无法连接到我的服务器的其他部分(DB,main网络服务器等)
什么是最好的方法呢?
运行VMware/Virtualbox:
(+)我猜它就像它得到的那样安全......即使有人设法"破解"......他们只会破解客人机器
(+)可以限制进程使用的cpu和内存
(+)易于设置..只需创建VM
( - )更难将沙箱目录从主机"连接"到guest虚拟机
( - )浪费额外的内存和CPU来管理VM
运行弱势用户:
(+)不会浪费额外的资源
(+)sandbox目录只是一个普通目录
(?)不能限制CPU和内存?
(?)不知道它是否足够安全......
还有其他方法吗?
运行Fedora Core 8的服务器,用Java和C++编写的"其他"代码
根据Apple的说法,Lion中引入的新XPC服务API提供了一种轻量级机制,用于与Grand Central Dispatch(GCD)集成并启动的基本进程间通信.
似乎可以将此API用作一种IPC,如POSIX IPC,但是,我找不到如何做到这一点.
我正在尝试使用XPC API传递两个进程,因此我可以在它们之间传递消息,但我总是在服务器端出现"XPC连接无效"错误.
我不想要XPC服务,我只想使用客户端 - 服务器架构交换消息.
我使用两个类似BSD的进程,所以没有Info.plist或者其他什么......
我一直关注这个讨论http://lists.macosforge.org/pipermail/launchd-dev/2011-November/000982.html但是这个主题看起来有点模糊和无证.
谢谢!
如果用户选择该选项,我希望我的应用程序自动启动.我一直在使用的方法不再允许在沙盒应用中使用.
我知道我必须创建一个助手来实现这一目标吗?是否有一个简单的教程,包含示例代码?
我找到了这个教程,但它对我不起作用:http://www.delitestudio.com/2011/10/25/start-dockless-apps-at-login-with-app-sandbox-enabled/
这是一个非常标准的事情,我不明白为什么没有可用的示例项目.
更新:
我上传了一个示例项目:http://ge.tt/6DntY4K/v/0?c
我正在尝试测试一个提供几个Web服务接口的包.它有一个测试套件,可以在不连接互联网的情况下测试大多数功能.但是,有一些挥之不去的测试可能会尝试连接到互联网/下载数据,我想阻止它们这样做有两个原因:第一,确保我的测试套件在没有网络连接的情况下工作; 第二,所以我不会用过多的查询向Web服务发送垃圾邮件.
一个明显的解决方案是拔掉我的机器/关闭无线,但当我在远程机器上运行显然不起作用的测试时.
所以,我的问题:我可以阻止单个python进程的网络/端口访问吗?("沙箱"它,但只是阻止网络连接)
(afeict,pysandbox不这样做)
编辑:我正在使用py.test
所以我需要一个可以使用的解决方案,py.test
以防影响任何建议的答案.
设置严格模式seccomp后如何EXIT_SUCCESS.这是正确的做法,syscall(SYS_exit, EXIT_SUCCESS);
在主要结束时打电话?
#include <stdlib.h>
#include <unistd.h>
#include <sys/prctl.h>
#include <linux/seccomp.h>
#include <sys/syscall.h>
int main(int argc, char **argv) {
prctl(PR_SET_SECCOMP, SECCOMP_MODE_STRICT);
//return EXIT_SUCCESS; // does not work
//_exit(EXIT_SUCCESS); // does not work
// syscall(__NR_exit, EXIT_SUCCESS); // (EDIT) This works! Is this the ultimate answer and the right way to exit success from seccomp-ed programs?
syscall(SYS_exit, EXIT_SUCCESS); // (EDIT) works; SYS_exit equals __NR_exit
}
// gcc seccomp.c -o seccomp && ./seccomp; echo "${?}" # I want 0
Run Code Online (Sandbox Code Playgroud) 连接到Java(1.5)服务器上的Socket后,我收到Flex 3沙箱错误#2048.服务器代码都是我的,即不在Apache下运行.Flash Player 10.0 r32.
顺序如下......
1 Java服务器启动,在端口843上侦听策略文件请求,在端口45455上侦听我的其他请求.
2 Apache服务的Flex客户端(虽然如果我从文件系统运行它会得到相同的结果),在主机上进行套接字连接:45455.
3 Flash Player从端口843请求策略文件.这是使用新安全设置查找主文件的标准行为.无论是否指定了不同的策略文件,都会发生这种情况.
4我通过端口843从Java提供以下XML:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>
Run Code Online (Sandbox Code Playgroud)
5播放器将以下内容写入调试策略日志...
OK: Root-level SWF loaded: http://localhost/bst/BasicSocketTest.swf
OK: Searching for <allow-access-from> in policy files to authorize data loading from resource at xmlsocket://192.168.2.3:45455 by requestor from http://localhost/bst/BasicSocketTest.swf
OK: Policy file accepted: xmlsocket://192.168.2.3:843
OK: Request for resource at xmlsocket://192.168.2.3:45455 by requestor from http://localhost/bst/BasicSocketTest.swf is permitted due to policy file at xmlsocket://192.168.2.3:843
Run Code Online (Sandbox Code Playgroud)
6我使用writeUTFBytes()
和从端口45455向客户端发送文本消息flush() …
我目前正在研究如何实现一个沙盒(类似于谷歌的NaCl项目),在那里我可以运行不受信任的x86代码(受限制的指令集),这样它就不会损害我的其余进程.
与NaCl不同,不受信任的代码不会在单独的进程中运行,而是与主机应用程序运行相同的进程.因此,一个关键步骤是使Windows的结构化异常处理正确,以便捕获错误(如无效的内存访问或div为0),并在Windows杀死我的主机应用程序之前正常终止沙箱.(NaCl不会遇到这些问题.沙箱是一个单独的过程,如果出现错误就会被杀死.)
此外,沙盒代码不应使用宿主应用程序堆栈,而是在我自己分配的某个单独的"堆栈"上运行.
正是这种组合(存在自定义分配堆栈时的异常处理)扭曲了我的想法.我已经检查了Go和Factor的语言实现,它们做了类似的事情并且通过这个帮助得到了一些运行.
但仍有一些悬而未决的问题和不确定因素.所以我想我会利用Stack Overflow的神奇知识来获得一些意见:-)
以下是一个工作代码片段,内容涉及核心问题:
code.cpp
#include <Windows.h>
extern "C" void Sandbox();
// just a low level helper to print "msg"
extern "C" void Write(const char* msg)
{
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),
msg, (DWORD)strlen(msg), NULL, NULL);
}
// should be called first on error and continue exception handling
LONG __stdcall GlobalExceptionHandler(_EXCEPTION_POINTERS*)
{
Write("GEH ");
return EXCEPTION_CONTINUE_SEARCH;
}
// should be called afterwards on error and terminate the process
// of course this is just a …
Run Code Online (Sandbox Code Playgroud) 我找不到在我刚刚创建的新Facebook应用程序中打开/关闭沙箱模式的设置.是否必须打开或关闭其他内容才能让我看到此设置?
连接沙盒paypal的网站工作,直到最近
它可以连接将卷曲
但是当它第二次发送请求时
它显示了错误
错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败
我已经尝试了一些在线参考并设置它的SSL SHA-256证书,但它返回相同的错误.其他建议在卷曲连接处切换到TLS,但由于我处理的项目很多,因此可能无法实现.
是否有任何建议将沙盒paypal与SSLv3连接?谢谢你的帮助.