-1

私は少し前に友人と別の口論になりました。彼は、Java が使用するネットワーク スタックが原因で、Java は非常に安全ではないと主張しています。彼は、ネットワークを使用するかどうかに関係なく、このネットワーク スタックはオープンで稼働していると述べています。また、Java アプリケーションを実行しているときはいつでも、誰かがネットワーク スタックを介して JVM をハイジャックし、コンピュータを制御することができます。これには真実がありますか?これが「本当の」質問ではないか、詳細が限られている場合は申し訳ありませんが、彼が私に言ったのはそれだけです.

4

1 に答える 1

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

だから、友達に仕事か学校に戻るように言いなさい ;-)

于 2015-10-20T16:16:08.657 に答える