私はCSharpCodeProvider
を使用して、自分のアプリケーション用のインスタントプラグインをコンパイルします。CSharpCodeProvider.CompileAssemblyFromFileのエラーの最大量
今のところ、よく見えるが、バイナリファイルで貼り付けられたC#コードなど、多くのエラーを生成するファイルをコンパイルしようとする可能性があります。多くの文字があり、それはerror CS1056: Unexpected character
で処理されます。
この動作は予想されますが、このような「悪意のある」ファイルのコンパイルプロセスは非常に時間がかかります。
私が妥当であると思う解決策の1つは、エラーの数を制限することです。それ以降はCSharpCodeProvider.CompileAssemblyFromFile
が返されます。
このような制限を設定することはできますか?
避けることが可能であれば、最初は非常に慎重にファイルを検査したくありません。
*リモートの危険性がある場合*受信ファイルが悪意のあるものであると個人的にはコンパイラの近くに置いてもそれほど信頼できません。コンパイラが –
@MarcGravellを見つけ出そうとすると、あまりにも高価ないくつかの興味深いケースがあります(Eric Lippertがリストを持っていることは間違いありません)。 (3SATについてのEric Lippertのブログ記事を参照)。ただし、コンパイル時にタイムアウトを設定すると安全です。 – SLaks
@MarcGravell - あなたは有効なポイントを持っていますが、よく、私はファイルをロードして試してみたいと思っています。私はそれが危険であるかもしれないことを知っている、しかし、まあ、それは本当に私が欲しいものです。 –