0

私は現在プログラミングコンテストのウェブサイトを開発しており、コードを送信してウェブサイトで実行するためのサポートを実装したいと考えています。かなりグーグルした後、私はまだこれのための「ガイド」を見つけていません。

このためのいくつかの基本的なガイドラインまたは基本ルールを含むWebサイト(または他のソース)を知っている人はいますか?

すべての返信に感謝します。

PS:誰かがすべてのプログラミング言語タグについて疑問に思っているなら、私は少なくともこれらの言語をサポートすることを計画しています。

4

3 に答える 3

1

注意してください -- このプロジェクトをより小さく、より戦術的な問題に分割するのが難しい場合は、他の人のコードを実際にサイトで実行しようとしないことを強くお勧めします。サイト自体の作成に関しては、Wordpress、GitHub など、可能な場合は事前に構築されたコンポーネントまたはサービスを活用することをお勧めします。

提出物を取得したら、それらを安全に実行する方法が必要になります。これは、すべての実用的な目的のために、他の誰かのコードを実行するマシンが自然に炎上する可能性があると想定する必要があることを意味します。これらの言語の一部には、「サンドボックス」でコードを実行するために使用できる機能があることは事実ですが、これらすべての言語を適切に保護できるほど、これらすべての言語の専門家ではない可能性があります。

Amazon の EC2 のようなものが役立つかもしれません。申請を実行する必要があるときに VM を起動し、完了したら破棄します。彼らは、おそらくこのコードを実行するのに適した事前構成されたイメージをいくつか持っています。バグのあるコードや悪意のあるコードが原因で何かがバグったとしても、それをスローするだけなので、あまり気にしません。終わったら離れてください。

于 2012-06-22T14:41:29.433 に答える
1

データのスクレイピングという特定の目的のためではありますが、すでにこれを行っているサイトがあります。

https://scraperwiki.com/ - jsfiddle とは異なり、scraperwikiはサーバー側のコードを実行します。私が収集できる限り、Amazon インスタンスを介して環境をサンドボックス化する可能性があります。彼らがサポートするさまざまな言語とスクレイピング ライブラリを考えると、彼らのコードを完全に監査してサニタイズできるかどうかはわかりません。

ほとんどの人は、scraperwiki がハッカーやスパマーによるリソースの悪用をどのように防いでいるのか、当惑していると思います。彼らはそれについてかなり口を閉ざしてきました。実行されたコードのすべてのビットを手動で監査したか、ハッカー/スパマーがまだそれらを捕まえていないかのいずれかです。このサイトには特定の機能があるため、疑わしいアクティビティを特定するためにデータの使用状況を確認している可能性があります。...しかし、ある男のサイトのスクレイピングは、別の男の嫌がらせであり、get/post によるインジェクションです。

私の推測では、セキュリティ監査プロセスがどのようなものかを公に説明することは決してないでしょう。

本当にそうしなければならない場合、仮想化なしでこれを行う最も簡単な機械的方法は、eval()のバリアントを使用することです。しかし、すべての言語にそれがあるわけではありません。これにより、仮想化であるオプション B が表示されます。仮想マシンをこのように管理する方法を説明できる私よりも優れた人々であり、見知らぬ人があなたのリソースを乱用することについて適切に警告します. 代わりに、PHP の経験を共有します。

数年前、私はその場で (ローカル マシン上で) コードを実行するプロジェクトを作成しました。入力すると、ajax を介してコードが取得され、キーストロークごとに実行されます。その動作のビデオは次のとおりです: http://www.youtube.com/watch?v=Yfxrt2pc3pg

5 年後、3 つの改善プロトタイプが作成されましたが、これを共通のリソースとして責任を持ってロックダウンする方法はまだわかりません。

于 2012-06-22T14:56:41.893 に答える
0

Java の場合は非常に単純です。

于 2012-06-22T14:29:19.487 に答える