Java网络堆栈安全性?

时间:2015-10-20 15:01:28

标签: java security java-security

我刚才和朋友谈了另一个争论。他声称Java由于它使用的网络堆栈而非常不安全。他说天气与否你使用网络,这个网络堆栈是开放和运行的。并且在任何时候运行Java应用程序,有人可以通过网络堆栈劫持JVM并控制您的计算机。这有什么事实吗?很抱歉,如果这不是一个“真实”的问题,或者仅限于细节,那就是他告诉我的全部内容。

1 个答案:

答案 0 :(得分: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 ) {
        //
      }
    }
  }
}

启动后,这个程序就坐在那里等待。这使我们有足够的时间来搜索开放端口。 我使用这个java版本在Ubuntu 14.04上运行代码:

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

告诉你的朋友要么回去上班,要么上学; - )