【问题标题】:How to restrict read and write permissions of Java Application如何限制Java应用程序的读写权限
【发布时间】:2019-02-18 22:38:47
【问题描述】:

目前我正在为一种编程语言 (pl) 创建一个游乐场。 在 Playground 中输入的代码在服务器上远程执行。

pl 在 Java VM 中运行,并在 docker 容器中执行。 由于您可以读取和写入 pl 中的文件,因此我需要从执行代码的 Java 应用程序中删除这些权限。

我正在执行这样的 Java 应用程序:

java -cp path/to/app.jar "app.package.main" -x "place code here"

如何删除 Java 应用程序的读写权限?

【问题讨论】:

  • 我们所说的读写权限是什么?
  • 读写任何文件。 java 应用程序应该不能读取或写入任何文件。
  • 由于 Java 应用程序只能做程序员打算/编码的事情,所以不要提供可以读取文件或写入文件的代码,或者只为某些角色提供代码
  • 我明白你的意思,但是编程语言的 jar 文件是固定的。不是我自己开发的,pl的作者做的。
  • 如果您运行的是不受信任的代码,那么您认为代码是用什么语言编写的并不重要。只要确保执行代码的用户无法执行任何操作你不希望程序能够做到。这是操作系统/文件系统权限问题,而不是 java 问题。 (提示:写文件并不是一个程序唯一可能做的潜在危险的事情——执行其他程序、读取它不应该看到的信息、发送电子邮件等等......也可能是问题,例如)

标签: java permissions


【解决方案1】:

您需要提供自定义安全管理器配置作为参数:

java -Djava.security.manager

但是:这并不意味着程序可以运行,因为如果某事被禁止,则

访问控制异常

被抛出,程序将崩溃,或者至少(很可能)表现不同。

查看本教程:https://docs.oracle.com/javase/tutorial/security/tour2/step2.html

更好的解决方案可能是获取代码并对其进行修改以满足您的需求(当然,只有在许可允许的情况下)。

【讨论】:

  • 非常感谢!我试试看
猜你喜欢
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 2018-06-07
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多