-1

Windows XP ベースの ACM Online Judge を使用しています。

今、私は人々が私のサーバーにシャットダウン コードを送信するという問題を助長しました。

public static void main(String[] args) {
    Runtime tr = Runtime.getRuntime();
    try {
        tr.exec("shutdown -s -f -t 60");

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

良いアイデアはありますか?シンプルであるほど良い。

4

3 に答える 3

2

送信された Java コードは、次のようなことを禁止するセキュリティ マネージャーを使用して Java サンドボックスで実行する必要があります。

  • 外部コマンドの実行、
  • System.exit() の呼び出し、
  • ファイルシステムへのアクセス、
  • ソケットを開く、
  • スレッドの作成、
  • その他、あなたを悲しませるもの。

しかし、それでも考えられるすべての懸念事項に対処するには不十分です。たとえば、リソースの浪費に対処するのは非常に困難です。たとえば、大量の CPU を使用して、多数のオブジェクトを作成します。そして、あなたのミスや Java のセキュリティ上の欠陥が原因で、誰かがサンドボックスから抜け出した場合にどうなるかという問題があります。

すべての問題を理解していることに自信が持てない場合は、 (IMO)あなたの「判断者」をシャットダウンするのが最善の選択肢です。それは(IMO)不必要なリスクの高い活動です。

于 2013-05-29T14:00:06.880 に答える
1

SecurityManagerをチェックしてください。独自の SecurityManager を定義すると、ポリシー ファイルを指定して、コードで実行できることを制限できます。

このチュートリアルも役立つ場合があります。

于 2013-05-29T14:00:54.180 に答える
0

信頼できないコードを実行するためのセキュリティ マネージャを簡単にカスタマイズできるようにすることを目的とした java-sandbox プロジェクト [1] をご覧ください。これにより、どのリソースにアクセスできるようにするかを正確に定義することが比較的簡単になります。

[1] http://blog.datenwerke.net/p/the-java-sandbox.html

于 2013-06-01T13:14:39.163 に答える