簡體   English   中英

在java中安全地運行javascript代碼

[英]Safely running javascript code in java

如果這個標題不清楚,我很抱歉,因為我不知道所有的術語,所以請耐心等待。

所以我試圖創建一個受控環境來運行Java應用程序中的任何JavaScript代碼。 注意:代碼是由用戶創建的,因此我必須阻止/阻止專門嘗試訪問/修改不應該觸及的java變量的代碼。 (最好通過拋出編譯錯誤以便用戶反饋)

編輯1:順便說一句,我嘗試使用Rhino和Nashorn。

這是一個簡單的例子。

public class ScriptRunner{
    public Foo foo=new Foo();
    //this is not supposed to be accessed by the script
    public int money=0;

    public Object run(){
        return compiler.compile(STRING START (obtained from a file)

        function main(someObject){
            //this is not allowed
            someObject.money=10000000000000000000000;
            //or this
            var someBlacklistedJavaObject=.....
            someBlacklistedJavaObject.someFuncton();

            //but this is allowed
            someObject.foo.name="Bob";
            return someObject.foo.someFunction();
        }

        STRING END).run("main",this);
    }

}

此外,我不確定這是否是可能的解決方案之一,但我不能使用內置的java安全類,因為實現它的一些無法訪問的代碼,並且不允許將安全對象設置為其他任何東西。

我想到的是,一個簡單的實現方法是在某個包中創建包裝Java類。 然后檢查腳本中的java對象是否沒有該路徑並拋出錯誤。 但問題是我不知道該怎么做。

這是我想要做的簡單可視化。

編輯2:希望保持低Java兼容性配置文件,但這不是100%必要的。

在Nashorn中使用ClassFilter (注意:要求Java> = 1.8.0_40)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM