【问题标题】:Securing untrusted java code保护不受信任的 java 代码
【发布时间】:2014-04-15 08:36:54
【问题描述】:

我有一个服务器应用程序,它接收从其客户端上传的 java 代码,然后需要根据其中的方法调用进行处理。

我的第一个想法是编译它 - 运行它,但是当我仔细考虑它时......叮叮安全。如何限制特定代码执行运行的调用,例如:它可以执行基本的 java jazz(for 循环等)访问 Math 等重要类并从我的服务器访问一些方法,但不会造成损害或做任何坏事到服务器。

【问题讨论】:

标签: java security


【解决方案1】:

在运行上传的代码时,您需要在运行时定义一个策略。正如 Oracle 在 Default Policy Implementation and Policy File Syntax 上的文档:

在运行时指定附加策略文件

还可以在调用应用程序执行时指定附加或不同的策略文件。这可以通过“-Djava.security.policy”命令行参数来完成,该参数设置 java.security.policy 属性的值。例如,如果您使用

java -Djava.security.manager -Djava.security.policy=someURL SomeApp

其中 someURL 是指定策略文件位置的 URL,则除了安全属性文件中指定的所有策略文件之外,还将加载指定的策略文件。

您可以在该策略中使用权限来限制代码可以执行的操作,例如:

permission java.io.FilePermission "/home/user/*", "read";

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2016-01-26
    • 2014-11-27
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多