如何在Docker容器中运行GUI应用程序?
是否有任何图像设置vncserver
或某些东西,以便你可以 - 例如 - 在Firefox周围添加一个额外的speedbump沙箱?
我想知道是否可以在浏览器中运行JavaScript沙箱,以防止访问HTML页面中运行的JavaScript代码通常可用的功能.
例如,假设我想为最终用户提供一个JavaScript API,让他们定义在"有趣事件"发生时运行的事件处理程序,但我不希望这些用户访问该window
对象的属性和功能.我能做到吗?
在最简单的情况下,假设我想阻止用户呼叫alert
.我能想到的几种方法是:
window.alert
全球重新定义.我不认为这是一种有效的方法,因为在页面中运行的其他代码(即用户在其事件处理程序中未编写的内容)可能想要使用alert
.也许服务器处理用户定义的函数然后生成要在客户端上执行的回调的解决方案可行吗?即使这种方法有效,是否有更好的方法来解决这个问题?
我想知道是否存在在Linux下的沙箱下运行不受信任的C程序的方法.什么会阻止程序打开文件,网络连接,分叉,执行等?
它将是一个小程序,一个家庭作业,它被上传到服务器并在其上执行单元测试.所以该计划将是短暂的.
我正在尝试提供一个仅限脚本的解决方案,用于通过浏览器读取客户端计算机上的文件内容.
我有一个适用于Firefox和Internet Explorer的解决方案.它不漂亮,但我现在只是在尝试:
function getFileContents() {
var fileForUpload = document.forms[0].fileForUpload;
var fileName = fileForUpload.value;
if (fileForUpload.files) {
var fileContents = fileForUpload.files.item(0).getAsBinary();
document.forms[0].fileContents.innerHTML = fileContents;
} else {
// try the IE method
var fileContents = ieReadFile(fileName);
document.forms[0].fileContents.innerHTML = fileContents;
}
}
function ieReadFile(filename)
{
try
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fh = fso.OpenTextFile(filename, 1);
var contents = fh.ReadAll();
fh.Close();
return contents;
}
catch (Exception)
{
return "Cannot open file :(";
}
}
Run Code Online (Sandbox Code Playgroud)
我可以打电话getFileContents()
,它会将内容写入fileContents
文本区域.
有没有办法在其他浏览器中执行此操作? …
在允许用户提交他们自己的代码以供服务器运行的模拟服务器环境中,任何用户提交的代码都可以在沙箱中运行,这与使用Applet在浏览器中不同,这显然是有利的.我希望能够利用JVM本身,而不是添加另一个VM层来隔离这些提交的组件.
使用现有的Java沙箱模型似乎可以实现这种限制,但是有一种动态方法可以仅为正在运行的应用程序的用户提交的部分启用它吗?
我在App Store中有一个应用程序,我想测试应用程序内购买.我按照Apple网站上描述的步骤操作,但我遇到了一些问题.
当我尝试在我的应用程序或设置/ iTunes和应用程序商店中登录iTunes时,收到错误:
不允许创建iTunes帐户.
此Apple ID目前无法与iTunes Store一起使用.请稍后再试
我搜索了互联网,但我一无所获.好像我是第一个遇到这种错误的人.
所以Lua似乎是在我的应用程序中实现安全"用户脚本"的理想选择.
但是,嵌入lua的大多数示例似乎都包括加载所有标准库,包括"io"和"package".
所以我可以从我的解释器中排除这些库,但即使是基本库也包含访问文件系统的函数"dofile"和"loadfile".
如何删除/阻止这些不安全的函数,而不仅仅是一个甚至没有像"ipairs"函数这样的基本内容的解释器?
我正在寻找一种从.NET应用程序访问插件的简单而安全的方法.虽然我认为这是一个非常普遍的要求,但我很难找到满足我所有需求的东西:
我已经调查了MEF和MAF,但我很难看到如何使它们中的任何一个符合要求.
假设我的理解是正确的,MAF无法支持在其隔离边界上传递泛型类型,这对我的应用程序至关重要.(MAF实现起来也非常复杂,但如果我能解决泛型问题,我会准备好使用它).
MEF几乎是一个完美的解决方案,但似乎无法满足安全性要求,因为它将扩展程序集加载到与主机相同的AppDomain中,因此显然可以防止沙箱化.
我已经看到了这个问题,它讨论了在沙盒模式下运行MEF,但没有描述如何.这篇文章指出"当使用MEF时,你必须信任扩展不运行恶意代码,或通过代码访问安全提供保护",但同样,它没有描述如何.最后,有这篇文章描述了如何防止未知插件被加载,但这不适合我的情况,因为即使是合法的插件也是未知的.
我已经成功地将.NET 4.0安全属性应用于我的程序集,并且MEF正确地尊重它们,但是我没有看到这有助于我锁定恶意代码,因为许多可能是安全威胁的框架方法(例如,方法System.IO.File
)标记为SecuritySafeCritical
,这意味着它们可以从SecurityTransparent
程序集访问.我在这里错过了什么吗?是否有一些额外的步骤我可以告诉MEF它应该为插件程序集提供互联网权限?
最后,我也看了创造我自己的简单的沙盒插件架构,使用单独的AppDomain,描述在这里.但是,据我所知,这种技术只允许我使用后期绑定来调用不受信任的程序集中的类上的静态方法.当我尝试扩展这种方法来创建我的一个插件类的实例时,返回的实例无法转换为公共插件接口,这意味着主机应用程序无法调用它.是否有一些技术可用于跨AppDomain边界获得强类型代理访问?
我为这个问题的长度道歉; 原因是要显示我已经调查过的所有途径,希望有人可以提出新的尝试.
蒂姆,非常感谢你的想法