我目前正在使用Ruby开发基于文本的游戏引擎,应用程序分为/lib中的Ruby代码和/data中的YAML数据,游戏需要时加载。我想让数据文件包含基本脚本,主要是在事件/观察者模型中。但是,我也希望用户能够生成和共享自定义场景,而不必担心脚本中嵌入了恶意代码。附录:我最初的计划是将用户创建的内容分为两种类型,“模块”是仅数据(因此安全)和添加额外功能的插件(但显然是不安全)。类比桌面游戏,模块就像发布的冒险场景和内容,插件就像包含额外规则和系统的规则手册。示例脚本(语法当然会根据解决方案而改变):---Location:observers:on_door_open:|monster=s
假设我有这个糟糕的Controller代码:classMovesController一段时间以来,我一直在寻找一种最好的方法来沙箱化不受信任的代码的执行,并偶然发现了这个ruby-lang特性中的讨论:https://bugs.ruby-lang.org/issues/8468TherealsolutiontothisproblemistorunasandboxatthelevelaboveRuby.Irununtrustedcodeonhttp://eval.ininsideaptracebasedsandbox.CharlieSomerville对该主题的进一步研究并没有得到比
我的Rails应用程序有关于何时应在页面上显示一些内容的复杂规则。我决定通过在Ruby中编写谓词(简单的“是/否”函数)并将它们存储在数据库中以供后续评估来实现这一点。它非常简单。我主要担心的是安全性:如果有恶意的人知道如何写入数据库,他们可以在数据库中插入任意Ruby代码,然后“您的所有基地都属于我们”。那么是否可以创建一个“沙盒”评估,例如,它已删除所有IO操作? 最佳答案 您可能想要检查“污点”方法和相关内容。这是一个很好的引用:http://ruby-doc.com/docs/ProgrammingRuby/html/tai
问题我有一些javascript内容,我想将其“沙盒”到iframe中:doSomethingPotentiallyMalicious(//ideally,iwantthistobeabletorun...top.document.getElementById('sensitive_information')//...butwantthistofailduetocross-domainpermissions);要注意的是,由于我们Web应用程序的性质,我需要在包含iframe的父页面上内联执行此操作,并且我需要在跨浏览器兼容的情况下执行此操作方式。数据URL...几乎但不完全是通过数据
我正在尝试编写一个类似书签的js片段,它可以从开发人员工具控制台运行,它将为页面中的图像提供src:varx=["PA633","PA10","PA11"];functionnextPage(i){$('#viewportdiv:first-child').animate({scrollTop:i},200);i+=1020;if(i此脚本的工作原理在于它为每个图像提供了正确的src链接。有没有办法让javascript自动下载/保存每个链接?可以单击每个链接(Chrome在新选项卡中打开这些链接),但这样做有点乏味。正确的方法是让javascript片段将图像保存到下载文件夹本身,但
我如何管理它以通过Run()在Sandbox()中放置变量和运行代码?functionSandbox(){this.test='insandbox';}Sandbox.prototype.Run=function(src){eval.call(this,src);};Sandbox.prototype.getvar=function(name){returnthis[name];};varbx=newSandbox();bx.Run('varx=1;');print(bx.getvar('test'))print(bx.getvar('x'))//undefinedprint(x)请不
我的印象是content_scripts是在页面上执行的,但现在看来好像正在进行一些沙盒操作。我正在开发一个扩展来记录站点的所有XHR流量(用于调试和其他开发目的),并且在控制台中,以下嗅探代码有效:varo=window.XMLHttpRequest.prototype.open;window.XMLHttpRequest.prototype.open=function(){console.log(arguments,'open');returno.apply(this,arguments);};console.log('myopen');console.log(window,win
我需要(a)沙盒,和(b)可序列化的延续。I'mexposingserver-sidegamescriptingtousers,并且它是非常异步的,因此回调模式使得代码不可读并且对于新手程序员来说非常难以接近。continuation-passing风格是另一种选择,但也有同样的缺点。异步是指对用户的查询可能需要数月才能完成。参见http://weaverengine.com/platforms我的完整列表可序列化延续似乎是一个非常优雅的解决方案,但很少有解释器支持它们。到目前为止,似乎我唯一的选择是Rhino。我希望NodeJS或PyPy能够工作,但目前的证据表明情况恰恰相反。Lua
我想知道WebWorker是否是对不受信任的JavaScript代码进行沙盒处理的安全方法。例如,在绘图应用程序的上下文中,开发人员可以在其中实现新的绘图工具,您可以将他们的代码放入webworker中,并且每当用户单击Canvas时,向他们发送包含光标位置的JSON消息,以及图像数据数组,当脚本完成时,它会传回一条包含新图像数据的消息。这是否安全,或者是否存在我没有想到的风险? 最佳答案 DOM对Webworker不可用,但可以访问同源内容,例如indexedDB。请参阅我的相关问题:Canworkersbesecureeno
我有一个应用程序域来托管不受信任的代码/程序集。我用安全属性解决了所有安全问题,而且效果很好。不受信任的代码在专用线程上运行。CLR是2.0。这就是我的AppDomainShellAppDomainSeed,Shell在主域中运行,seed是不受信任域中的受信任代理/助手。我有兴趣限制创建新线程和更改优先级。目前,我不受信任的程序集可以设置ThreadPriority.Highest或通过创建10k线程来终止操作系统。有SecurityPermissionFlag.ControlThread但这只会阻止像Abort()这样的高级操作。我正在查看Thread类实现,对于那些简单的操作,它