ミディアム トラスト ホスティング環境でのリフレクションの欠如は、多くの一般的な Web アプリケーションで多く の問題を引き起こしているようです。
- Medium Trust でReflectionPermissionがデフォルトで無効になっているのはなぜですか?
- リフレクションは、共有ホスティング環境でどのようなリスクをもたらしますか?
ランダム リファレンスについては、MSDN: How to use Medium Trust in ASP.NET 2.0 を参照してください。
ミディアム トラスト ホスティング環境でのリフレクションの欠如は、多くの一般的な Web アプリケーションで多く の問題を引き起こしているようです。
ランダム リファレンスについては、MSDN: How to use Medium Trust in ASP.NET 2.0 を参照してください。
リフレクションにより、悪意のあるコードはあらゆる種類の機密情報を検査できます。知的財産はそれほど多くはありませんが (確かにそれもそうです)、接続文字列、パスワード、銀行口座データなど、非公開で安全でなければならないデータです.
もちろん、多くのプログラムは、より簡単に侵害されるベクトルを通じて当然のことながらこのデータを公開しますが、アプリケーションの攻撃面を増やす理由はありません。
コメントから会話の一部を取り上げるように編集しました。
本当のリスクはファイル システムへの無制限のアクセスであり、これがリフレクションを本当の危険に変えていることはおそらく事実でしょう。悪意のあるアクターがアセンブリ (またはアセンブリにコンパイルされるもの) を仮想ディレクトリに取得できる場合、リフレクションのアクセス許可があれば問題になります。(もちろん、これが発生した場合、他の潜在的な問題もありますが、この特定の脆弱性を軽視するべきではありません。)
共有ホスティング環境では、防ぐのは難しいですが、不可能ではないことは確かです。おそらく、この質問をServerFaultにクロスポストして、善良な人々の意見を確認する価値があります。
私は、ユーザーがリフレクションを使用して実行できる「悪い」ものを見つけたことがありません。プライベートまたは保護されているとマークされたメソッドを呼び出すことができるため、人々は怖がりますが、私が見たところ、実際のリスクを課すものはありません。
ほとんどの場合、それは少なくとも部分的には、(半)専用ホスティングのためにあなたをシェルアウトさせるための販売テクニックです:)
このテーマに関する次のMSDN記事を見つけました。
この記事は、ジェフの答えをエコーします:
リフレクションは、タイプとメンバーに関する情報を取得し、メンバーにアクセスする機能を提供します。非公開メンバーにアクセスすると、セキュリティ上のリスクが生じる可能性があります。したがって、非公開メンバーにアクセスするコードには、適切なフラグを指定したReflectionPermissionが必要です。
ただし、このリスクがお客様のホスティングアカウント間で悪用される可能性はないと思います。これは個人的なリスクをもたらすだけのようです。たとえば、リフレクションを使用して、ホスティング環境で自分のアセンブリを探索できます。ただし、他の顧客は、リフレクションを使用して私のアセンブリを探索することはできませんでした。彼らは自分たちの集会を探検することしかできませんでした。
これは、複数の開発チームが関与する単一のWebアプリケーションで問題を引き起こす可能性があります。ある開発チームは、リフレクションを使用して別の開発チームのアセンブリを探索できます。
ただし、これは共有ホスティング環境ではまれなシナリオです。ほとんどの共有ホスティングWebサイトには、すべてのコードに完全にアクセスできる非常に小さなチームが含まれています。言い換えれば、秘密はありません。アセンブリが他の共有ホスティング顧客から安全である限り、それは問題ではありません。
リフレクションを有効にしても、ほとんどの共有ホスティングWebアプリケーションにリスクはありません。
<IPermission class="ReflectionPermission" version="1" Flags="RestrictedMemberAccess"/>
私が間違っている場合は訂正してください。