我在我的Java應用程序中使用JRuby來允許用戶運行腳本。該應用程序的正常功能所需的一組操作並不大。該腳本應該控制Java代碼中的一些變量,並在執行過程中更改該過程。是否可以在Java應用程序中限制允許的JRuby命令?
所以我想有機會限制允許的操作數。說,我不希望用戶有權訪問文件系統。
f = File.new("myfile.txt", "w")
f.puts("Hello!")
f.close
這應該是禁止的。
我該如何做這樣的設置?我唯一的想法是在啓動之前解析用戶腳本,並將腳本與允許的操作的白名單進行比較。
標準'SecurityManager'可能不夠(例如,尤其是對於資源使用 - 如果客戶端腳本將JRE發送到無限循環?)。這種額外的預防措施很有意義。 –
白名單的想法非常棒!您能否給我提供一些提示或網址,在這種情況下,「白名單」的含義是什麼?它可以通過JRuby的支持功能來完成,還是我應該在解析腳本作爲文本時自己實現它?我找到了一個黑麥白名單的例子。對於JRuby來說,這會很有幫助(https://github.com/delano/rye/blob/master/lib/rye/cmd.rb)謝謝! – Anton
@Anton我更新了一個原始的例子。 – Woot4Moo