4

可以使用 JDK jarsigner 工具对 Java jar 进行签名。这与 policytool 结合起来,似乎只允许您在运行时向 jar 添加权限。我想要一个默认的“撤消运行权限”。是否有可能使 java 以这样的方式进行白名单,即只允许运行已由特定证书集签名的 jar 文件?

4

3 回答 3

4

据我了解,这是在您可以控制的计算机上。利用

 java -Djava.security.manager YourApplication

启动应用程序时。这将安装可以通过策略文件配置的默认安全管理器。策略文件允许为每个签名者或每个代码库配置权限

  grant signedBy "me" {
      permission java.io.FilePermission "/home/me/*", "read,write";
  };

在各种可能的权限之间,我目前看不到“根本运行”的权限,但似乎您可以完全禁用网络和文件系统访问。

如果您有可能运行自己的作为决策者的外部应用程序(启动或不启动),您可以验证代码中的签名,如前所述

此外,您可以使用 -verify 开关围绕 jarsigner 编写包装器,如此所述:

jarsigner -verify -keystore mystore hackerApplication.jar 

并使用一些类似 bash 的包装器在输出中捕获“smk”。

于 2013-01-13T15:49:19.800 回答
1

对于自 7u10 以来 Oracle JRE 上的 Java 插件和 WebStart,Java 控制面板中有相关的自定义安全设置。在“安全 JRE 版本上不受信任的应用程序的操作”下,选择“不运行”。请参阅设置 Java 客户端的安全级别

于 2013-01-13T22:48:28.483 回答
0

如果这是针对基于浏览器的应用程序,则可以使用部署规则集来完成。

https://blogs.oracle.com/java-platform-group/entry/introducing_deployment_rule_sets

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/deployment_rules.html

于 2017-03-29T12:59:34.443 回答