相关疑难解决方法(0)

如何保护使用javax.scripting运行的脚本?

我正在使用javax.scripting添加支持在服务器端运行任意用户上传的JavaScripts.显然我想要保护这些脚本!

Rhino本身就有一个用于在运行时保护脚本的框架.javax.scripting但是,该文档未提及脚本可用的安全性,权限或限制类.那么这只是javax.scriptingAPI中的一个巨大漏洞,它没有提供一个框架来保护它执行的脚本吗?

我不想直接使用Rhino,因为我最初尝试过但是在将Java实例暴露给正在运行的脚本时遇到了一些问题.该javax.scripting框架由它(它使用犀牛罩下)在一个多线程服务器使这个琐碎,并且还简化了运行脚本.

我想列出可在运行脚本中访问/实例化的Java类.有人能指出我如何实现这一目的的示例或文档吗?

javascript security javax.script server-side-scripting

16
推荐指数
1
解决办法
4553
查看次数

如何从Nashorn引擎中删除java apis?

是否可以从nashorn-engine隐藏或删除java api?因此它只能看到或使用"默认"ECMAScript 262 Edition 5.1以及一些特别暴露的函数/变量?

我想让我的最终用户为自己创建一些特定的逻辑,而不用担心他们会破解整个系统.当然,在nashorn引擎等中可能存在一些安全漏洞,但这是不同的主题.

编辑:对不起,我忘了提到我在我的java应用程序中运行nashorn,因此不能使用命令行参数.

javascript java nashorn

9
推荐指数
2
解决办法
4023
查看次数

中断运行nashorn脚本的java线程

在下面的代码中,我有一个javascript运行在与主要一个单独的线程中.该脚本是一个无限循环,因此它需要以某种方式终止.怎么样?

在脚本开始运行后调用.cancel()不起作用.但是如果我在线程初始化之后调用.cancel(),它将终止它(注释掉的行).

package testscriptterminate;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import java.util.Timer;
import java.util.TimerTask;

public class TestScriptTerminate extends TimerTask{

    private ExecutorService threads;
    private Future runScript;

    private Timer t;

    public TestScriptTerminate(){
        t = new Timer();
        t.schedule(this, 6000); //let the script run for a while before attempt to cancel

        threads = Executors.newFixedThreadPool(1);
        runScript = threads.submit(new ScriptExec());

        //runScript.cancel(true); //will cancel here, before the script had a change to run, but useless, i want to cancel at any …
Run Code Online (Sandbox Code Playgroud)

javascript java multithreading nashorn

7
推荐指数
2
解决办法
4761
查看次数

Java设计模式,用于在属性文件中保留方法名称

我有一个属性文件(键/值)对,我从当前读取一个键的值,并在UI中显示该值.

复杂性增加了,现在基于某些公式,价值更具动态性.该公式包含一个变量参数,其值I将在运行时获得.

是否有任何Java设计模式来设计此方案.

我想在针对一个键的属性文件中放置一个方法名称.

现在我将读取密钥并获取方法名称.此方法将计算该特定键的值.

请让我知道你的建议

java design-patterns

5
推荐指数
1
解决办法
527
查看次数

如何在 SecurityManager 下运行 Java 8 的 nashorn

我正在寻找沙盒 Java 8 的 Nashorn javascript 引擎。我已经发现了 --no-java 标志,它有帮助,但我还发现以下链接说需要“在启用 SecurityManager 的情况下运行”:http : //mail.openjdk.java.net/ pipermail/nashorn-dev/2013-September/002010.html

我还没有找到说明如何使用 Nashorn 完成此操作的文档,那么如何安全地完成此操作?

security sandbox java-8 nashorn

4
推荐指数
1
解决办法
2690
查看次数