2

ユーザーがスクリプトをサーバーに渡して実行できるシステムの実装を検討しています。ありがたいことに、 PythonをC#に埋め込むためのリソースはたくさんあります。ただし、システム機能にアクセスし、望ましくない結果や悪意のある結果を引き起こすスクリプトをユーザーが渡すことを主に心配しています。主な例は次のとおりです。サーバー上のファイルへの書き込みは無制限です。

私は、スクリプトのアクセスをクライアントに提供するフレームワーククラスだけに完全に制限するための良い方法を探していましたが、私が見つけたヒットのほとんどは、基本的に「スクリプトインタープリターをC#に埋め込む方法です」ですが、アクセスの制限などの安全上の懸念。確かに、スクリプトを最初にパスしてブラックリストに載っているコードを検索することはできましたが、何かを見逃す可能性は常にあります。

どの言語を実行するかについての要件はありません。できれば、事前にコンパイルできる言語を使用することをお勧めします。サーバーはC#を実行してリクエストに応答し、一部をユーザーが作成したコードに委任します。ユーザーが作成したコードからのアクセスを制限する言語のメソッドを見つけるのに苦労しています。

4

1 に答える 1

2

Luaまさにこの種のことを目的とした、を使用することを強くお勧めします。ユーザー作成か組み込みかを問わず、すべての関数はテーブルのエントリであるため、スクリプトの機能を非常に簡単に制限できます。ioたとえば、テーブルを削除することは、悪意のあるファイルシステムの変更を防ぐ簡単な方法です。

于 2013-03-03T20:07:33.100 に答える