Банки Java можно подписать с помощью инструмента JDK jarsigner. Это, в сочетании с policytool, по-видимому, позволяет вам добавлять привилегии к jar-файлу только при его запуске. Я бы хотел, чтобы по умолчанию "Отменить доступ для запуска". Можно ли сделать так, чтобы java делала белый список таким образом, чтобы запускались только файлы jar, подписанные определенным набором сертификатов?
Ограничить Java для выполнения только подписанных jar-файлов?
Ответы (3)
Насколько я понимаю, это на вашем компьютере вы можете контролировать. Использовать
java -Djava.security.manager YourApplication
при запуске приложения. При этом устанавливается диспетчер безопасности по умолчанию, который можно настроить с помощью политики . файлы. Файлы политики позволяют настраивать разрешения для каждой подписывающей стороны или для каждой базы кода по строкам
grant signedBy "me" {
permission java.io.FilePermission "/home/me/*", "read,write";
};
Между различными возможными разрешениями я в настоящее время не вижу разрешения «запускать вообще», но кажется, что вы можете полностью отключить доступ как к сети, так и к файловой системе.
Если у вас есть возможность запустить собственное внешнее приложение, которое принимает решение (запускать или не запускать), вы можете проверить подпись в своем коде как уже обсуждалось.
Кроме того, вы можете написать оболочку для jarsigner с помощью переключателя -verify, как описано в здесь:
jarsigner -verify -keystore mystore hackerApplication.jar
и захватить "smk" в выводе, используя некую оболочку, похожую на bash.
Для подключаемого модуля Java и WebStart в Oracle JRE, начиная с версии 7u10, в панели управления Java есть соответствующие настраиваемые параметры безопасности. В разделе «Действия для ненадежных приложений в безопасной версии JRE» выберите «Не запускать». См. Установка уровня безопасности клиента Java а>.
Если это приложение на основе браузера, это можно сделать с помощью набора правил развертывания.
https://blogs.oracle.com/java-platform-group/entry/introduction_deployment_rule_sets
http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/deployment_rules.html