-2

私はjavaファイルをコンパイルするサーバを持っています。どうすれば悪質なJavaファイルからサーバを保護できますか?例えば、私のサーバは、サーバからすべてのファイルを削除するコードをコンパイルすべきではありません。オンラインJavaコンパイラ

OS:窓 Javaバージョン1.8 C#

runner = new Process 
     { 
      StartInfo = 
      { 
       UseShellExecute = false, 
       RedirectStandardOutput = true, 
       RedirectStandardError = true, 
       FileName = JavaCompiler.PATH_TO_COMPILER, 
       Arguments = " -cp " + pathToFile + " Main", 
       CreateNoWindow = true, 
       WorkingDirectory = pathToFile 
      } 
     }; 


     runner.Start(); 

このコードは、Javaプログラムを実行します。

私の目的は、私はあなたがコンパイル時にこれを行うことができないと思います。この

File f = new File("c:\\");  
String[]entries = index.list(); 
    for(String s: entries){ 
     File currentFile = new File(index.getPath(),s); 
     currentFile.delete(); 
    } 
+0

問題の詳細を説明できますか?例は素晴らしいだろう。 – surajsn

+2

制限付きの権限を持つユーザーの下でコンパイラ/ランタイムを実行します。 –

+0

あなたはひどく混乱しているようです。あなたのコマンドはJavaコンパイラを起動しますが、コンパイルされていないプログラムを実行するように引数を与えます。あなたの心を作りなさい。コンパイルサービスを提供しているだけの場合、コードは実行されないので、コードは何をしても問題ありません。あなたが何を求めているのか不明です。 – EJP

答えて

3

のようなコードから、私のプログラムの開発を防ぐことです。たとえば、への唯一の方法は、のプログラムがコンパイル時の分析ですべてのファイルを削除できないことです。ファイルを削除しないようにプログラムを停止することです。また、それは難しいです...静的解析を使用して検出が困難なファイルを削除するには、さまざまな微妙な方法があるためです。

実行時に制限を適用するには、Java SecurityManagerを使用する方がよいでしょう。セキュリティーマネージャー/サンドボックスアプローチ(正しく実装されている場合)は、プログラムがの一部のファイルを読み取り/書き込み/削除することを許可します。

仮想マシン、chroot jail、またはSELinuxを使って実装された同様のものでユーザのコードを実行するJVMを実行します。ユーザーがあなたの防御を覆すことができれば、不可逆的なダメージを与えないようにしてください。

さらに、匿名の人々がJavaコードを実行できるサービスを提供しないでください。 (は、この種の問題を自分で解決するためにが必要なのですか?)

+0

[ええ](http://ideone.com/)、[なぜ](http://www.tutorialspoint.com/compile_java_online.php)[would](https://www.compilejava.net/)[*誰か*](http://www.browxy.com/)[do](https://www.codechef.com/ide)[that](https://www.jdoodle.com/online-java-compiler )! [それは](http://compileonline.com/)[insane](http://www.onlinecompiler.net/java)!! [誰も](http://www.guru99.com/try-java-editor.html)[必要](https://codepad.remoteinterview.io/)[that](https://code.hackerearth.com /)、[right](https://repl.it/languages/java)! [完全に](http://codetwist.com/)[役に立たない](https://idedr.com/)! ;-) – Arjan

+1

@Arjan - 私はそれが役に立たないとは言いませんでした。私はなぜOP <<それをしなければならないと言った。 (特に...あなたが言っているように...既に他の多くの人が同様のサービスを提供しています!) –

関連する問題