3

Azure ASP.NETアプリケーションを作成すると、デフォルトで.NETの信頼レベルは完全信頼になります。私は常に、ASP.NETの中程度の信頼レベルに似たWindowsAzureの部分的な信頼に変更します。

これを行うには、ロールで[プロパティ]を選択するときにGUIを使用するか、次のように定義ファイル(.csdef)でenableNativeCodeExecutionをfalseに設定します。

<WebRole name="ServiceRuntimeWebsite" enableNativeCodeExecution="false">

セキュリティを意識した開発者として、私はデフォルトで、より高いレベルのセキュリティを提供する部分信頼モードでアプリケーションを実行したいと考えています。ReflectionやP/Invokeのようなものを使用する必要がある場合は、開発者として、自分でその信頼レベルを下げることを決定したいと思います。

マイクロソフトがデフォルトの.NET信頼レベルとして完全信頼を使用することを決定した理由があると確信していますが、私はそれを見ることができません。理由をご存知の場合、またはご存知だと思われる場合はお知らせください。

4

4 に答える 4

2

P / Invoke for .NETリフレクションにも、完全な信頼が必要です。結論として、ほぼすべての適度なサイズのアプリは完全な信頼を必要とします。これは、ほぼすべての広範なライブラリもそれを必要とするためです(たとえば、NHibernate)。実際、私はAzureフォーラムでも正反対の質問をしています。

于 2010-01-13T09:05:37.323 に答える
1

完全または部分的な信頼の問題は、アプリケーションが実行される環境に関係します。所有している環境およびアセンブリの制御および/または「所有権」が多ければ多いほど、完全な信頼設定を持つことがより受け入れられます。

たとえば、Azure Webサイト(2012年7月の機能)を作成し、WordPressまたはUmbracoを模倣した場合、Webサイトで任意のアセンブリプラグインをダウンロードしてインストールできるため、部分的に信頼できる環境を用意することが重要です。ダウンロードして実行したプラグインの1つで、制御または所有していないものにマルウェアが含まれている可能性があります。これは、Webサイトのセキュリティと安定性に影響を与えるだけでなく、他の(マルチテナントの)ホストされているWebサイトに影響を与えると主張する人もいます。

確かに、WebサイトはLog4NetやStructureMapなどのサードパーティライブラリに依存しますが、これらは非常によく知られており、セキュリティへの影響について問題のない精査されたライブラリです。エルゴ、Azure Webロール(「マルチテナント」タイプの問題ははるかに少ない)を実行していて、そのような「信頼できる」サードパーティアプリを実行しているだけの場合、完全信頼として実行することに問題はありません。

于 2012-12-14T18:09:35.057 に答える
0

はい、残念ながら、部分的に信頼して実行される大規模な.NETアプリを作成することは(不可能ではないにしても)依然として非常に困難です。

はるかに優れたテクノロジーとツール(CAS.NETなど)が必要です

于 2012-01-31T12:06:57.053 に答える
0

ミディアムトラストは現在正式に廃止されているためです。Visual Studioで新しいWebプロジェクトを開始する場合は、既に完全な信頼が必要です(部分的な信頼は機能しません)。Microsoftによると:中程度の信頼に依存せず、代わりに完全な信頼を使用し、信頼できないアプリケーションを別々のアプリケーションプールに分離します。

出典:

Stackoverflowの回答:引用された応答ASP.NETチーム

Microsoft:ASP.NET部分信頼はアプリケーションの分離を保証しません

Microsoft:ASP.NETWeb開発のベストプラクティス

于 2014-03-10T13:20:58.663 に答える