2009-04-08 42 views
5

我正在開發一個系統,允許開發人員上傳自定義groovy腳本和freemarker模板。Sandboxing Java/Groovy/Freemarker代碼 - 防止執行特定方法

我可以通過默認的Java安全基礎架構提供一定程度的安全性 - 即防止代碼訪問文件系統或網絡,但是我需要限制對特定方法的訪問。

我的計劃是修改Groovy和Freemarker運行時,讀取可能將某些方法列入白名單或黑名單的註釋,但是這會迫使我維護其代碼的分叉版本,這是不可取的。

我基本上需要做的就是阻止從Groovy或Freemarker調用時執行特定的方法。我已經考慮過一個可以看到調用堆棧的黑客攻擊,但是這會造成巨大的速度(而且非常混亂)。

有沒有人有任何其他想法來實現這個?

回答

2

OSGi非常適合這個。您可以將代碼分區爲捆綁包,並精確設置每個捆綁包公開的內容以及其他捆綁包。這對你有用嗎?

+0

這是否允許我限制調用特定方法的代碼? – 2009-04-08 05:13:54

+0

這個概念就像捆綁。然後,您可以限制該包之外的方法和內容。 – 2009-04-08 06:57:32