簡體   English   中英

限制Java編譯器API

[英]Restricting Java Compiler API

我正在考慮創建一個使用限制更大的Java版本的游戲內代碼IDE,例如,我不希望它使用I / O流API。 這有可能嗎?

另外,inb4 this 它仍然對限制能力沒有幫助,只有愚蠢/邪惡的學生XD。

您可以自定義java.policy 您可以在此處設置可在Java應用程序中使用的類。 如果您的學生使用該策略中未提供的課程,則會拋出安全異常。

限制編譯器是一種可能-但可能不是最簡單的一種。 您可以嘗試使用-bootclasspath選項調用編譯器,以提供JRE rt.jar的精簡版本。 然后,使用禁止的類(或實際上:使用限制的jar文件中未包含的類)將產生編譯器錯誤。

使用運行時安全管理器並僅對學生代碼授予受限權限是一個更好的主意。 僅向學生的班級授予他們實際需要的權限 (根據要解決的任務,幾乎沒有權限 ),他們將無法執行任何惡意操作,同時仍可以使用大多數標准API,只要它不與外部系統對接。

當然,這仍然不能防止無限循環,這實際上是不可能的

取決於您“不使用”的含義。 如果不允許在該IDE中編寫的代碼訪問流API(而不是IDE本身),則始終可以提供自己的類加載器,從而限制對類或整個包的訪問。

暫無
暫無

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

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