我們正試圖在「企業」產品中提供可編寫腳本的元素。我們想使用groovy,但我們很難確保非常基本的東西。Java中不受信任的Groovy腳本安全
例如,我們想防止客戶端只需要去
Class.forName("my.company.internal.SecruityTools").runAsAwesome(...)
我們已經安裝了一個策略,只允許accesDeclaredMembers
並已覆蓋checkPackageAccess
方法,只允許白名單包安全管理器。不幸的是,默認的classLoader鏈似乎只是繞過了這一點,並加載類的任何方式。
看起來這是一個相當常見的/討論的問題,但我不能在我的生活中找到一個圖書館,甚至是一個很好的博客文章,瞭解如何在更大的應用程序環境中鎖定不受信任的腳本。
有沒有人做到這一點成功?我是否缺少一些相當明顯的帖子/概念?這是否已經有一個堅實的庫?也許Groovy.tinFoilHatMode(true)
?
也許[對類似問題的答案](http://stackoverflow.com/a/6490674/274466)有一些幫助?答案指向[此博客文章](http://www.jroller.com/melix/entry/customizing_groovy_compilation_process),它提供了一種可能的機制,以防止這種事情... – ig0774 2012-04-19 01:31:05
如果我沒有錯,有相當多的動態語言功能可以防止任何形式的AST保護。 (「ge」+ t「+」ClassLoader「),」fo「+ $ rname或者其他類似的東西 – 2012-04-19 01:50:23
@Ambience您是否嘗試過使用ig0774建議的程序?我不相信您可以逃避它們像你這樣的技巧建議,如果可以的話,這是應該儘快報告給Groovy團隊的東西 – 2012-04-19 08:07:50