Политика безопасности Java не применяется

#java #security #policy

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

Вопрос:

Я работаю над примером из Learning Java, в котором обсуждается создание политики безопасности для разрешения подключения к сокетам. Я добавил файл политики, который позволяет приложению открывать соединение. Но когда я запускаю ее, соединение не разрешено.

Любая помощь очень важна.

Том

 Here is the code

        //file: EvilEmpire.java
import java.net.*;

public class EvilEmpire {
  public static void main(String[] args) throws Exception{
    try {
      Socket s = new Socket("192.168.0.1", 80);
      System.out.println("Connected!");
    }
    catch (SecurityException e) {
      System.out.println("SecurityException: could not connect.");
    }
  }
}

And here is the policy file


grant codeBase "file:/c:/users/flash/eclipse-workspace/learning java/bin/" {
  permission java.net.SocketPermission "192.168.0.1", "connect";
};

  

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

1. Что такое фактическая ошибка? Возможно, вы получили connection refused , что не связано с Security Manager, а скорее из-за того, что конечная точка, к которой вы пытаетесь подключиться, не запущена.

2. По умолчанию обычные приложения Java уже имеют разрешение на открытие / подключение к любому сокету в сети. В каком контексте вы выполняете свою программу, которая, по вашему мнению, нуждается в дополнительных разрешениях?

3. В нем говорится «SecurityException: не удалось подключиться». из предложения catch

4. Я запускаю ее из среды разработки Eclipse

Ответ №1:

Ну, только что обновил eclipse, и теперь программа работает правильно. Я не знаю, было ли это обновлением или тем фактом, что IDE была перезапущена.

Спасибо всем за ваши комментарии.

Том