Записи в .java.policy игнорируются

#java #security #applet

#java #Безопасность #апплет

Вопрос:

Я разрабатываю JAVA-апплет, который требует доступа на чтение и запись к папке. Когда я добавляю следующую запись в файл java.policy в папке JRE, это работает:

  permission java.io.FilePermission "${user.home}${/}logtest${/}-", "read, write";
  

Однако, если я добавлю запись в файл .java.policy в домашнем каталоге пользователей, это не сработает.

При дальнейшем исследовании я добавляю другой файл политики mytest.policy, содержащий точно такое же разрешение, указанное выше, и модифицированный файл java.security с:

 policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
policy.url.3=file:${user.home}/mytest.policy
  

Разрешения успешно применены.

Кто-нибудь знает, почему записи разрешений .java.policy не работают?

Комментарии:

1. «Кто-нибудь знает, почему записи разрешений .java.policy не работают?» Мне трудно понять, почему игнорируются файлы политики. В конце концов.. «Я разрабатываю JAVA-апплет ..» апплет должен быть подписан цифровой подписью перед развертыванием другим пользователям, так почему бы не начать сейчас? Кстати: см. Раздел Поддержка плагинов Java устарела и переходит на веб-сайт без плагинов .

2. @AndrewThompson Для проекта, над которым я работаю, требуется апплет, я знаю, что апплеты находятся на выходе. Апплет подписан (самоподписан), но это все еще не работает, поэтому я также использую файлы политики. Тем не менее остается вопрос, почему права доступа к файлу .java.policy не работают, но работают, если одни и те же записи добавляются либо в java.policy, либо в пользовательский файл политики.

3. «Апплет подписан (самоподписан) ..» JRE больше не будет принимать самонастраивающиеся сертификаты. Они не стоят тех битов, на которых они написаны.

4. @AndrewThompson ХОРОШО, это хороший момент в отношении самозаверяющих сертификатов.

Ответ №1:

Попробуйте отредактировать файл C:UsersUSERNAMEAppDataLocalLowSunJavaDeploymentdeployment.properties и добавьте в файл следующую строку: deployment.security.use.user.home.java.policy=true