在接受和执行上传的不受信任的代码时,如何保护我的服务器免受恶意Activity的侵害?用户应该能够实现我的接口(interface)和给定的数据,执行一些计算并返回数据。不需要I/O操作,当然也不需要线程/进程操作或其他愚蠢行为。使用java.policy文件可以拒绝所有内容(通过不授予任何内容)。$cattest.policygrant{};使用此策略文件,未授权的操作将导致安全异常。$catPrint.javapublicclassPrint{publicstaticvoidmain(Stringa[])throwsException{System.out.println(Syst
我刚开始使用JavaScriptEngine对我的应用程序做一些扩展,然后我注意到我可以在脚本中导入所有java类并不受限制地使用它们。有没有办法指定脚本可以使用哪些类?我不希望他们做java.lang.System.exit(1);这样的事情 最佳答案 那么,您似乎需要了解JavaSecurityManager。这是一个很大的主题,您可能需要仔细阅读它,如果您无法让它为您工作,然后发布一个更具体的问题。 关于java-JavaScriptEngine的安全问题,我们在StackOver
目前我正在尝试编写用于运行不受信任的Java代码的沙箱。这个想法是将Java应用程序与访问文件系统或网络套接字隔离开来。我目前的解决方案是重写SecurityManager,它禁止对IO或网络的任何访问。现在我不想禁止,而是要重定向对文件系统的调用,即如果应用程序想要写入"/home/user/application.txt",文件的路径应该是替换为类似"/temp/trusted_folder/application.txt"的内容。所以基本上我想让应用程序只访问某个特定文件夹中的文件系统,并将所有其他调用重定向到该文件夹。所以这里是FileOutputStream类的方法,其中
引言:NFTInsider由NFT收藏组织WHALEMembers(https://twitter.com/WHALEMembers)、BeepCrypto(https://twitter.com/beep_crypto)联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类,其他动态类,五个角度剖析NFT市场现状,了解NFT,读NFTInsider周报就够了。市场数据艺术类新闻Moonbirds系列NFT地板价突破2枚ETH据Blur数据显示,Moonbirds系列NFT地板价现报2.1199枚ETH,
假设某个程序员给了我一个可执行的jar(来自Java代码)以及要使用的入口点。我想在没有网络或文件系统访问或数据库访问以及固定数量的CPU和内存的受限沙箱环境中(以编程方式)从Java代码运行这个jar。即,Java代码不应对在我的jvm上运行的其他程序造成任何副作用。理想情况下,我希望根据情况允许某些访问权限(例如,仅具有配额的特定目录中的文件)。 最佳答案 您可以使用策略文件控制环境http://docs.oracle.com/javase/1.4.2/docs/guide/security/PolicyFiles.html#E
我目前正在开发一个小型Java应用程序,其中受信任的代码必须与不受信任的代码一起运行。为此,我安装了一个自定义的SecurityManager,它会在检查权限时抛出SecurityException。作为可信代码和不可信代码之间的桥梁,我有一个线程使用Constructor.newInstance()来实例化一个不可信类型的对象。在进行此调用时,安全管理器配置为阻止所有内容。有趣的是,前15次我尝试使用Constructor.newInstance()创建对象时,一切正常,但第16次我遇到了SecurityException。我已经设法将其归结为一个简单的测试程序:importjava
有一个我无法阻止编译的不良C风格转换。不受欢迎的强制转换执行C风格的强制转换,从某个类的对象到某个其他类的非常量引用。这些类(class)是无关的。同时,我喜欢支持从同一类的对象到const引用的C风格转换。我正在提供一个公共(public)转换运算符来支持理想的转换。在这种情况下,似乎无法阻止不受欢迎的转换。转换为非常量引用无法构建(“Sandbox::B::operatorSandbox::A&()”(在第30行声明)不可访问*),不幸的是转换为const引用要么失败(错误:不止一个从“Sandbox::B”到“constSandbox::A”的转换函数适用:函数“沙盒::B::o
我想使用boost::sandbox中的odeint模块,但我不确定如何将从svn检索到的沙箱代码集成到我的boost安装中。我已经将boost安装到$BOOST_ROOT=/usr/local/boost_1_45_0。将odeint的内容合并到我的boost路径中是否合适,这会将header放在$BOOST_ROOT/boost/numeric/odeint.hpp。这是正确的方法还是有获取和安装boost::sandbox代码的标准方法? 最佳答案 boost.odeint完全只有标题。因此,您可以将odeint/boost目
我正在查看codepad.org并且while(1)fork给出了以下输出。不允许的系统调用:SYS_fork检查此链接以获取确切的详细信息。http://codepad.org/rNR9mMVv通过谷歌搜索,我了解到他们还禁用了使用套接字的系统调用。不允许的系统调用:SYS_socketcall谁能告诉我如何在沙盒环境中运行程序之前禁用某些系统调用? 最佳答案 通过用具有空stub或异常抛出器而不是真实函数的模拟替换运行时库? 关于c++-在沙盒环境中运行程序时如何禁止系统调用?,我们
当我启动我的UnityiOS应用程序时,它不断提示我:Enterthepasswordfor.[environmentsandbox]注意没有用户名,我不能输入用户名。所以我也不能输入密码。我删除了所有对IAP的引用(channel和购买文件夹,并禁用了IAP服务),删除了iOS构建文件夹并重新构建它,然后编译它。我在iPhone上退出了iTunes。我还是提示我。我附上了截图。 最佳答案 我在使用RevenueCat(react-native-purchases)在ReactNative应用程序中实现IAP时遇到了同样的问题。我的