問題タブ [code-access-security]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 完全信頼のみの .EXE でリンク要求について心配する必要はありますか?
私は FxCop CA2122 メッセージを理解しようとしています (おそらく、惨めなものを無効にする前に) .NET CAS の理解を明らかに超えています。
アプリケーションは .EXE であり、AllowPartiallyTrustedCallers でマークされていません。コード分析から CA2122 警告が表示され、最下位レベルの呼び出しから、それ自体が LinkDemands を持つメソッドへの LinkDemands を上方に伝播できなかったことについて不平を言っています。
明らかに、呼び出し元に LinkDemands を配置し、次に呼び出し元の呼び出し元を無限に配置することができます。このコードのすべての呼び出しは常に完全に信頼されるため、(AIUI) すべてのリンク要求は常に満たされるため、これはまったく無意味に思えます。Eric Lippert も、それを行うのは非常に危険だと考えているようです。
そう:
「このコードは完全信頼でのみ実行される」と言うために欠落しているアセンブリレベルの属性は何ですか? (AllowPartiallyTrustedCallers がないことはこれを暗示していると思いましたが、おそらく .EXE の場合はそうではありません)
それとも、その CA 警告をオフにして先に進むべきですか? それらを無効にする前に、それらを正しく理解するのが好きです...
更新: 使用しているフレームワークのバージョンを尋ねられました.2.0RTM であり、XPe プラットフォーム上にあるため、それ以降のアップグレードは非常に困難です。
.net - カスタム アクセス許可を使用してアセンブリを読み込む
信頼されていないアセンブリを AppDomain に読み込む必要があります。このアセンブリを実行するために新しい AppDomain をサンドボックス化する必要はありません。これは、HttpContext.Current (別のサンドボックス化された AppDomain では null になる) などの特定の機能へのアクセスが内部的に必要になるためです。
これを行う古い方法は、いくつかのカスタム Evidence を使用して Assembly.Load を呼び出すことだったと思いますが、これは 4.0 の CAS の変更によって廃止されたようです。
http://msdn.microsoft.com/en-us/library/ms145229.aspx
http://msdn.microsoft.com/en-us/library/ee191568(VS.100).aspx
新しいセキュリティ モデルを使用して、ここで目的を達成する方法がよくわかりません... 誰かが説明したり、別のアプローチを提案したりできますか?
ありがとう。
.net - .NET プラグインをサンドボックス化する実用的な方法を探している
.NET アプリケーションからプラグインにアクセスするためのシンプルで安全な方法を探しています。これは非常に一般的な要件だと思いますが、すべてのニーズを満たすものを見つけるのに苦労しています。
- ホスト アプリケーションは、実行時にプラグイン アセンブリを検出してロードします。
- プラグインは未知のサードパーティによって作成されるため、悪意のあるコードの実行を防ぐためにサンドボックス化する必要があります
- 共通の相互運用アセンブリには、ホストとそのプラグインの両方によって参照される型が含まれます
- 各プラグイン アセンブリには、共通のプラグイン インターフェイスを実装する 1 つ以上のクラスが含まれます。
- プラグイン インスタンスを初期化するとき、ホストはそれ自体への参照をホスト インターフェイスの形式で渡します。
- ホストは共通インターフェースを介してプラグインを呼び出し、プラグインは同様にホストを呼び出すことができます
- ホストとプラグインは、相互運用アセンブリで定義された型 (ジェネリック型を含む) の形式でデータを交換します。
私は MEF と MAF の両方を調査しましたが、いずれかを法案に適合させる方法を見つけるのに苦労しています。
私の理解が正しいと仮定すると、MAF は分離境界を越えてジェネリック型を渡すことをサポートできません。これは私のアプリケーションにとって不可欠です。(MAFも実装が非常に複雑ですが、ジェネリック型の問題を解決できれば、これを使用する準備ができています)。
MEF はほぼ完璧なソリューションですが、拡張アセンブリをホストと同じ AppDomain にロードするため、セキュリティ要件を満たしていないように見えます。
MEF をサンドボックス モードで実行する方法について説明しているこの質問を見たことがありますが、その方法については説明していません。この投稿には、「MEF を使用する場合は、拡張機能が悪意のあるコードを実行しないことを信頼するか、コード アクセス セキュリティによる保護を提供する必要がある」と記載されていますが、その方法については説明されていません。最後に、未知のプラグインが読み込まれないようにする方法を説明しているこの投稿がありますが、正当なプラグインでさえ未知であるため、これは私の状況には適していません。
アセンブリに .NET 4.0 セキュリティ属性を適用することに成功し、それらは MEF によって正しく尊重されますが、これが悪意のあるコードをロックアウトするのにどのように役立つかわかりません。のメソッドなどSystem.IO.File
) は としてマークされています。これは、アセンブリSecuritySafeCritical
からアクセスできることを意味します。SecurityTransparent
ここで何か不足していますか?プラグイン アセンブリにインターネット権限を提供する必要があることを MEF に伝えるために実行できる追加の手順はありますか?
最後に、ここで説明されているように、個別の AppDomain を使用して、独自の単純なサンドボックス プラグイン アーキテクチャを作成することも検討しました。しかし、私の知る限り、この手法では遅延バインディングを使用して、信頼されていないアセンブリ内のクラスで静的メソッドを呼び出すことしかできません。このアプローチを拡張してプラグイン クラスの 1 つのインスタンスを作成しようとすると、返されたインスタンスを共通のプラグイン インターフェイスにキャストできません。つまり、ホスト アプリケーションがそれを呼び出すことができません。AppDomain 境界を越えて厳密に型指定されたプロキシ アクセスを取得するために使用できる手法はありますか?
この質問が長くなってしまい申し訳ありません。その理由は、誰かが何か新しい試みを提案できることを期待して、私がすでに調査したすべての道を示すことでした.
あなたのアイデアに感謝します、ティム
security - ドメインオブジェクトを保護する適切な方法は?
エンティティ Entity と、次のインターフェイスを持つサービス EntityService および EntityServiceFacade がある場合:
サービス レベルで getEntity メソッドへのアクセスを制御することで、エンティティへの読み取りアクセスを簡単に保護できます。しかし、ファサードがエンティティへの参照を取得したら、それへの書き込みアクセスを制御するにはどうすればよいでしょうか? saveEntity メソッドがあり、次のようにサービス (ファサードではない) レベルでアクセスを制御する場合 (ここに Spring セキュリティ アノテーションを使用):
ここでの問題は、エンティティの名前を変更した後にアクセス制御チェックが既に行われているため、それだけでは不十分です。
皆さんはどのようにしますか?代わりにドメイン オブジェクト メソッドを保護しますか?
ありがとう
編集:
たとえば、次のような注釈を使用して、ドメイン オブジェクトを保護する場合:
私はドメインモデルを破っていますか(DDDによると?)
編集2
私は主題に関する論文を見つけました。その論文の結論は、ドメインオブジェクトメソッドに注釈を付けてそれらを保護するのが良い方法であると述べています。これについて何か考えはありますか?
c# - コード アクセス セキュリティでの C# 反復子メソッドの使用に関する問題
イテレータブロックを使用して次を返す単純なメソッドがありますIEnumerable<T>
。
通常、このメソッドは正常に動作し[SecurityCritical]
ますが、アセンブリ (または上記のメソッドを含むクラス) に属性を適用するTypeLoadException
と、メソッドを呼び出そうとすると がスローされます。読み込みに失敗している型は、反復子メソッドに対応するコンパイラ生成クラスであり、GetEnumerator
セキュリティが透過的であるため、問題の原因となっているのはそのメソッドです。
比較のために、上記のメソッドを変更して を入力して返すとList<MyItem>
、すべて正常に動作します。
助言がありますか?
ありがとう、
ティム。
asp.net - ASPXページがWebサーバー自体のディレクトリにアクセスできないのはなぜですか?
XML形式でリクエストをWebサーバーに送信するWebクライアントがあります。Webサーバーは(かなり大きな)ファイルを作成し、それをキャッシュされたディレクトリに保存して、応答ストリームを介してWebクライアントに返します。これは、最初の数回は正常に機能しましたが、突然機能しなくなり、次の例外(XMLでラップ)が報告されました。
コードアクセスセキュリティについてはよくわかりません。私はEverybodyにディレクトリの完全な制御を与えることさえ試みました。これは開発サーバーであり、パブリックマシンではないため、これは問題ではありません。なぜこれが最初の数回は機能するのかわかりませんが、今は機能を停止します。
サーバーとクライアント(同じマシン)の両方にWindows764ビットでVisualStudio2008を使用しています。IIS7.0と.NetFramework3.5を使用しています。
編集済み2010/12/1316:05EST:
CodeplexのDotNetZipライブラリを使用しているため、このエラーが発生します。IISまたは私の構成にアセンブリを追加する方法はありますか?
security - ウェブサイトのソースコードの企業スパイ
これは最も技術的な質問ではないかもしれませんが、それでも私は興味がありました...
Googleのような巨大企業は、どのようにしてコードが従業員に盗まれるのを防いでいますか?私は間違っているかもしれませんが、検索アルゴリズムのソースコード(とりわけ)は競合他社(つまりMicrosoft)にとって価値があると思います。
私はそれを次のように表現するのが最善だと思います:
特定のプロジェクトのためにGoogleのコードリポジトリにアクセスし、大量のコードをフラッシュドライブにコピーして競合他社に持ち込むことを十分に許可されている悪意のある従業員を妨げているのは何ですか?
cloud - クラウドでの安全な共同ソフトウェア開発環境
クラウドで動作する、Chaperonなどの安全な共同ソフトウェア開発環境を探しています。コードがコピーされて環境から貼り付けられるのを防ぎ、IPの盗難を防止、検出、阻止するためのあらゆる対策を講じる必要があります。もちろん、Subversionの追跡とデバッグのための通常のIDEツールがすべて含まれている必要があります。助言がありますか?
flash - Flash ムービーをダウンロードできないようにする
ソースコードにフラッシュのソースを隠して、映画自体をダウンロードできないようにしたり、コピーしないほうがよい方法はありますか?
c# - 廃止された CAS ポリシーのため、AppDomain.CreateDomain(string,evidence) の代替を探しています
Microsoft .Net Framework--Application Development Foundation Training Kit book の第 8 章レッスン 2: アプリケーション ドメインの構成に取り組んでいます。
ShowWinIni は、実行したいプログラムのアセンブリ名です
私が実行すると:
次のメッセージが表示されます。「このメソッドは、.NET Framework によって廃止された CAS ポリシーを暗黙的に使用しています。互換性の理由から CAS ポリシーを有効にするには、NetFx40_LegacySecurityPolicy 構成スイッチを使用してください。http: //go.microsoftを参照してください。詳細については、 .com/fwlink/?LinkID=155570をご覧ください。"
Evidence オブジェクトなしで AppDomain を作成すると、アセンブリを正常に実行できます。
もちろん、私はhttp://go.microsoft.com/fwlink/?LinkID=155570にアクセスしましたが、指定された特権を持つアプリケーション ドメインを作成する方法についてまだ混乱しています。
次に見つけた最も役立つサイトはhttp://msdn.microsoft.com/en-us/library/bb763046.aspxでしたが、StrongName オブジェクトは NULL に計算されます。
プログラムは、このすべてのコードを実装するクラスの名前です。
あなたのアドバイスとヒントを事前にありがとう!