2015-10-20 11 views
-1

Некоторое время назад я вошел в другой аргумент с моим другом. Он утверждает, что Java крайне небезопасен из-за используемого сетевого стека. Он говорит, что погода или нет, вы используете сеть, этот сетевой стек открыт и работает. И в любое время, когда у вас запущено приложение Java, кто-то может захватить JVM через сетевой стек и взять под свой контроль ваш компьютер. Есть ли у этого в этом правда? Извините, если это не «реальный» вопрос или ограничен подробностями, но это все, что он мне сказал.Безопасность сетевого стека Java?

+3

Я голосую закрыть этот вопрос как вне темы, потому что речь идет о безопасности jvm, а не о программировании. Кроме того, слишком широк. Существует выделенный пакет стека безопасности, если у вас есть более конкретные претензии, на которые вы хотите получить ответ. – njzk2

+2

Ваш друг звучит смущенно, но довольно сложно ответить на такое неспецифическое требование, особенно в формате ответа на вопрос/ответ. –

+3

Глупости в лучшем свете и вне темы. Докажите его не так, и запустите программу Java, а затем запустите netstat или tcpview. – Marged

ответ

2

Как это [вставить любимое проклятие здесь] ошибки меня так, как это делает вас, я создал короткую тестовую программу:

public class Shullbit { 
    public static void main(String[] args) { 
    while(true) { 
     System.out.println("Still not convinced ?!?"); 
     try { 
     Thread.sleep(5000); 
     } 
     catch(Exception e) { 
     // 
     } 
    } 
    } 
} 

После запуска этой программы просто сидит и ждет. Это оставляет нам достаточно времени для поиска открытых портов. Я побежал код на Ubuntu 14.04 с этой версией Java:

java version "1.8.0_45" 
Java(TM) SE Runtime Environment (build 1.8.0_45-b14) 
Java HotSpot(TM) Server VM (build 25.45-b02, mixed mode) 

Когда я запускаю программу с java -Dcom.sun.management.jmxremote Shullbit я могу видеть, что был открыт порт:

sudo netstat -anop | grep java 
tcp6  0  0 :::56066    :::*     LISTEN  18797/java  off (0.00/0/0) 
unix 2  [ ]   STREAM  CONNECTED  30209 18797/java 

Но этого следовало ожидать, потому что мы сказали Java для этого. И этот порт по умолчанию может использоваться только локально и может быть защищен SSL, паролями или клиентскими сертификатами.

Когда я запускаю ту же программу с только java Shullbit нет открытых портов:

sudo netstat -anop | grep java | wc -l 
0 

Так скажите своему другу, чтобы либо вернуться на работу или в школу ;-)