我目前正在开发一个应用程序,用户将动态选择dll,应用程序将执行该dll中的一些方法.(如果您按照第一个链接,您将看到我正在使用.Net Framework 开发一种Robocode游戏应用程序).
例如,当战斗开始时,run执行来自dll 的方法.
由于将执行run方法中指定的任何内容,因此必须应用相当多的安全约束.
例如,如果编程dll的用户,而不是仅使用适用于接口的方法(机器人用于行走和触发的方法等等),则调用将检索文件甚至删除的方法来自硬盘的文件...当另一个用户将该dll加载到他的计算机中时,这些方法将在他的电脑上调用,他的文件将被这个恶意代码修改.
因此,我需要以某种方式使这个应用程序从一种沙盒环境运行,以便无论调用什么方法,它都不会影响打开dll的计算机的硬盘.
关于如何开始这样做的任何想法?
这是一个关于如何加载这些dll并调用其方法的示例:
for (int i = 0; i < robotList.Count; i++)
{
IRunnable o = robotList[i];
new Thread(delegate()
{
o.run();
}).Start();
}
Run Code Online (Sandbox Code Playgroud) 我正在为uni开发一个iPhone应用程序,我们在iPhone的沙箱目录中创建一个sqlite数据库文件.
我们的应用程序内部写入此文件,我想知道如何将此文件恢复到我的桌面.我真的不介意怎么做,任何方式都没关系.也许有可能甚至做一些事情,比如从应用程序发送电子邮件(如果可能的话).只是一个建议,如果有人知道一种方式.
提前致谢.
在我的应用程序开始时,用户记录他们的声音,然后在沙箱中将其保存为"recorded.wav".我以后如何创建一个表明它位置的字符串?我想要的东西看起来像:
/var/folders/u6/u6pKbm2MFriwajkdt-OQME+++TI/-Tmp-/recorded.wav
Run Code Online (Sandbox Code Playgroud)
谢谢,
请记住,这是针对iPhone设备和模拟器.
我无法在我尝试在 Lion 中沙箱的应用程序中发送分布式通知。正在获取…
deny distributed-notification-post
Run Code Online (Sandbox Code Playgroud)
...在控制台的system.log. 是否有任何权利可以添加以允许通知。
是否可以这样做,如果可以,如何做?
我希望制作交互式代码学习系统,它允许用户(通常是年轻程序员)用c ++语言编写一个函数的内容,将其发送到服务器,然后将其编译成动态库并从主程序调用.
程序期望函数根据给定的参数返回正确的答案.
当然,会有一些孩子,会导致分段错误等错误.(服务器是Linux驱动的).
那么,我可以创建退出函数的信号处理程序吗?
我想要完成的事情:
for (int i = 0; i < PLAYER_NUM; i++) {
snprintf(buf, sizeof(buf), "players/%s.so", player[i]);
handle = dlopen(buf, RTLD_LAZY);
add[i] = (int (*)(int, int))dlsym(handle, "sum");
} // that was simply loading of functions from libraries.
for (int x = 0; x < 10; x++)
for (int i = 0; i < PLAYER_NUM; i++) {
if(failed[i]) continue;
ret = add[i](x, 5);
if(sigfault_received() || res != (x + 5)) {
failed[i] = true;
}
}
Run Code Online (Sandbox Code Playgroud) 在Symfony2中,默认情况下禁用了一些Twig模块.其中一个是调试扩展,它添加了{% debug %}标记(在开发环境中很有用).
要启用它,没有什么困难,您可以将此服务添加到您的配置中:
debug.twig.extension:
class: Twig_Extensions_Extension_Debug
tags:
- { name: 'twig.extension' }
Run Code Online (Sandbox Code Playgroud)
但是如何启用{% sandbox %}标签?
我的问题是扩展的构造函数采用安全策略:
public function __construct(Twig_Sandbox_SecurityPolicyInterface $policy, $sandboxed = false)
{
$this->policy = $policy;
$this->sandboxedGlobally = $sandboxed;
}
Run Code Online (Sandbox Code Playgroud)
通过阅读twig文档,我看到了本机的方式(没有Symfony2):
$tags = array('if');
$filters = array('upper');
$methods = array(
'Article' => array('getTitle', 'getBody'),
);
$properties = array(
'Article' => array('title', 'body'),
);
$functions = array('range');
$policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions);
$sandbox = new Twig_Extension_Sandbox($policy);
$twig->addExtension($sandbox);
Run Code Online (Sandbox Code Playgroud)
在使用沙盒之前,我可以在服务中做类似的事情,但这并不像我们习惯的依赖注入那么清晰.
是否有更好/正确的方法在Symfony2中启用twig的沙箱扩展?
我的应用程序在下面读取iTunes的XML库文件
/Users/username/Music/iTunes/iTunes Music Library.xml
Run Code Online (Sandbox Code Playgroud)
但是,如果iTunes资料库存储在不同的硬盘上,则此文件也将存储.沙箱不允许我访问此文件,除非用户授予它.
这是使用a完成的NSOpenPanel.
但是,现在我必须要求用户每次打开应用程序时都有权访问此文件,这非常烦人.
有没有办法永久授予对特定文件的访问权限?
例如,如果您在另一个应用程序中打开一个文件,如果您退出该应用程序,该应用程序将再次打开相同的文件.像这样的东西会很有用.
我运行rpython翻译来创建一个pypy沙箱.
~/pypy-2.3.1-linux64/bin/pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone
Run Code Online (Sandbox Code Playgroud)
有一些警告,其中两个似乎涉及时间.
Run Code Online (Sandbox Code Playgroud)[sandbox:WARNING] Not Implemented: sandboxing for external function 'clock_gettime' [sandbox:WARNING] Not Implemented: sandboxing for external function 'clock_getres'
它的长短是在翻译完成时,运行沙箱时会出现以下输出:
'import site' failed
Python 2.7.6 (32f35069a16d819b58c1b6efb17c44e3e53397b2, Jun 11 2014, 19:06:04)
[PyPy 2.3.1 with GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>>
Run Code Online (Sandbox Code Playgroud)
然后导入时间也失败了:
>>>> import time
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named time
>>>>
Run Code Online (Sandbox Code Playgroud)
这是沙箱的预期行为吗?如果是这样,在沙盒流程中嵌入网站包等的正确做法是什么?我希望使用pip安装在那个环境中,但沙盒似乎让它变得非常困难.(当我尝试安装distribute.py时,基本上我反对导入时间,因为它需要datetime,这需要时间)
我正在尝试从沙盒买家帐户到沙盒商业 帐户付款. 我收到了错误
目前,印度的PayPal账户只能发送付款.此收件人没有资格获得资金.
这是我的html表单:
<form name="_xclick" action="https://www.sandbox.paypal.com/cgi-bin /webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="vpratap-facilitator@grepruby.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="quantity" value= "5">
<input type="hidden" name="amount" value="1">
<input type="hidden" name="shipping" value="0" />
<input type="image" src="http://www.paypal.com/en_GB/i/btn/x-click-but01.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and
secure!">
</form>
Run Code Online (Sandbox Code Playgroud) 我正在尝试从沙盒应用程序执行助手应用程序,但它抛出错误 errAuthorizationDenied (-60005),我使用 Apple SMJobBless作为示例。目前我有这个
var authItem: AuthorizationItem = AuthorizationItem(name: kAuthorizationRightExecute, valueLength: 0, value: nil, flags: 0)
var authRights: AuthorizationRights = AuthorizationRights(count: 1, items: &authItem)
let authFlags: AuthorizationFlags = AuthorizationFlags.ExtendRights
var result = false
var authRef: AuthorizationRef = nil
let status: OSStatus = AuthorizationCreate(&authRights, nil, authFlags, &authRef)
if status == errAuthorizationSuccess {
result = SMJobBless(kSMDomainSystemLaunchd, "**helperBundleIdentifier**", authRef, nil)
}
Run Code Online (Sandbox Code Playgroud)
我做错了什么,还是在沙箱中不可能?
sandbox ×10
macos ×3
objective-c ×3
cocoa-touch ×2
iphone ×2
php ×2
.net ×1
assemblies ×1
c ×1
c++ ×1
cocoa ×1
codeigniter ×1
osx-lion ×1
paypal ×1
pypy ×1
python ×1
smjobbless ×1
swift ×1
symfony ×1
twig ×1