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