2011-08-23 10 views
5

ユーザが異なる言語でコードを提出できるようにするいくつかのウェブサイト(oneなど)があり、システムはそれらのテストケースをコンパイルして実行します。開発者として、私は彼らがどのようにこれを行い、どのように複数の言語(PHP、Python、C、.NET、javascript)をサポートしているのか不思議です。コードを動的にコンパイルして実行するには?

送信されたコードが悪意のあるため、コードを実行する環境が危険にさらされる可能性はありますか?

ありがとうございました。

答えて

0

私はその特定のサイトについては話すことができませんが、通常はsandboxと呼ばれる制限された環境を作成します。この環境では、機能の可用性をそこで実行されるプログラムに制限することができます。これは、言語内の特定のAPI呼び出しをブロックすることによっても実行できます。

Chroot on * nixは、サンドボックスを作成する方法の1つです。

+0

Windows環境でサンドボックスを作成する方法はありますか? – Nick

+0

私の頭の上から、VirtualBoxやVM Wareのような仮想マシンソリューションを考えることができます.Googleはこれをサンドボックス+ウィンドウの最初のリンクとして見つけました - http://downloadsquad.switched.com/2009/03/11/five -sandboxing-apps-to-protect-your-windows-computer / – arunkumar

3

これはどうやって彼らがどのように複数の言語(PHP、Python、C、.NET、javascript)をサポートしているのか不思議です。

シンプル:複数の言語インストールがインストールされており、指定された入力に対して正しいものが呼び出されます(これはもちろんユーザーによって与えられます)。

送信されたコードが悪意のあるため、コードを実行する環境が危険にさらされる可能性はありますか?

はい、もちろんです。しかし、無数の潜在的な対策があります。特定の時間後にプロセスを強制終了し、潜在的に危険な機能へのアクセスを阻止するなど、さまざまな形でプロセスをサンドボックス化します。これを実行する実際のサイトが何を話しているかについてはCodepad's about pageを参照してください。

関連する問題