2010-11-30 14 views
4

他の誰もがSilverlight 4のセキュリティは少しねじっていると思いますか?次のシナリオで私はSilverlight 4のセキュリティを理解するのに助けが必要です

ルック:

  1. シルバー、信頼できるアプリに設定され、ブラウザモードを使い果たし、あなたがファイルを開くダイアログを使用してファイルを参照することができます。
  2. COMオートメーションからファイルを開くには、ファイルのパス名が必要です。例えば(excel/word)としますが、これは何でもかまいません。
  3. セキュリティ制限のためダイアログからファイルの完全なパスを取得することはできません
  4. ただし、COM FileSystemObjectを使用することができます。フォルダの作成、ファイルの移動、削除。

つまり、なぜ実際にCOMを使用してファイルにアクセスできるようになると、実際のビジネスユースケースを実際に妨げるSilverlightのセキュリティについて大騒ぎになるのですか?

別の言い方をすると、ユーザーが悪意のあるSilverlightアプリを実行した場合、そうは思わないでしょう。 COMは後でSilverlightアプリケーションによって呼び出されました。ここで

  • ユーザーはファイルを閲覧する....私が何を意味するかである - C:\ myFile.xls Silverlightは(セキュリティ上の理由から)パスを得ることからあなたを防ぐ
  • シルバーのみ
  • COMを使用すると、バックグラウンドでファイルシステムにこれまでどんなことをしてもかまいません。あなたが名前を知っていれば、今すぐ私の文書にそのファイルをコピーすることを含む!しかしそれ以外にも、使用していないファイルがあればそれを消去することができます。私の意見Silverlightのセキュリティモデルでは

は欠陥がある、どちらか彼らは、開発者に完全な信頼を与え、彼らはSilverlightがCOMへのアクセスを許可されていないローカル

または

を実行していたかのように、私たちは、アプリケーションを実行できるようにしている必要があります。

私はそれだけですか、他の誰かがその悪い実装を見ているのですか?

これは、セキュリティ警告をトリガ:

OpenFileDialog flDialog = new OpenFileDialog(); 
FileInfo fs = flDialog.File; 
string fileName = fs.FullName; 

これは私があなたの視点に同意しない

dynamic fileSystem = AutomationFactory.CreateObject("Scripting.FileSystemObject"); 
fileSystem.CopyFile(anyFileName,anyDestination); 

答えて

2

ません。あなたがインストールされたCOMオブジェクトができるようにすることができる事実は、ではありません。は、同じことをするために既存のSilverlightコードを一括して変更する理由です。

なぜですか?そのコードを開くプロセスでは、Silverlightコンポーネントが信頼済みモードで実行されていないときに、同じコードが実行される可能性があります。それが一度も起これば、メディアは一気にその場に出るだろうし、Silverlightの評判はおそらくは不公平なものになるだろう。

個人的に私は、MSがSilverlightで取っているセキュリティに対する非常に慎重なアプローチに非常に満足しています。

+0

何がいいですか、単にダイアログボックスからファイルを取得することができます。私はセキュリティの制限をスローするとは思わない。私はこのことをすることができないので、JavaやAdobe Airのような他の詐欺師を見たり、サーバー側のソリューションを使わなければなりません。この場合、結果は残念ながらSilverlightはこのビジネス要件の使用例を処理できません。 –

+1

慎重であれば、COMをまったく許可しないでしょう。 –

+0

@JL:あなたは私の意見を忘れてしまったと思います。 Automation.Factoryは信頼できるアプリケーションで使用するために__only__存在します。この新しいコードは、このシナリオ用に特別に追加されました。このシナリオの外での使用を完全にブロックするのは簡単です。 SL4より前に存在しなかったため、既存のコードは使用されません。これは、アプリが信頼できるモードでインストールされているかどうかによって、既存のコードの動作を微妙に変更することとはまったく異なります。 – AnthonyWJones

1

OpenFileDialogなどの一部のSilverlightコントロールは、信頼モードと信頼できないモードの両方で動作します。これらのコントロールは、Silverlightの以前のバージョンから移植されています。ここでは、新しいレベルの昇格された信頼は考慮されませんでした。

これを指摘してくれてありがとうアンソニーに感謝します。

開発者はここで議論している信頼の定義に気づく必要があります。昇格された権限で完全に信頼されるSilverlightアプリケーションを実行することは、ローカルのSilverlight Windowsベースのアプリケーションを実行することと同じではありません。 ActiveXよりもはるかに制限的です。

Silverlightで提供されている信頼が特定のビジネス要件に適合する可能性があります。しかし、Silverlightがあまりにも制限的で、研究を最善に行うためのベストプラクティスがあり、コードサンプルを実行してヒールの上を飛び越える前に重要なことを確実に行うシナリオがある可能性があります。

1

マイクロソフトでは、パブリックSilverlight APIがWindowsおよびMacOSプラットフォームの両方で同じ動作をすることを保証しています。そのため、機能は共通の分母と技術的な実現可能性によって多くの点で制限されています。 Windowsプラットフォームのみを対象とした特定のケースとして、完全な信頼モードでCOMイントープを扱い、他のプラットフォームでも同じことはしません。したがって、セキュリティの制限は、APIの再利用の面で両国で同じであるため有効です。

0

私は元のポスターに同意します。私はそれが悪い実装だと思う。ディレクトリ構造を含むファイルをブラウズするダイアログが組み込まれています。ファイルを選択してFileInfoオブジェクトを取得できますが、セキュリティによってFullName(ディレクトリとファイル名)が取得できなくなります。どうして?それがセキュリティをどのように改善するのでしょうか?まず、開いているファイルダイアログのポイントは何ですか?

オリジナルのポスターのように、これらの動的オブジェクトでは、セキュリティホールのように見えるローカルファイルシステムを変更できます。

私がやりたいことは、Excelファイルからデータを読み込むことです。ユーザがExcelデータをアプリケーションに読み込む方法で、ファイルはコンピュータのどこにでも保存できます。これらは、インターネット接続が可能になるまで、ローカルで注文を記録するファイルを使用するセールス担当者です。誰がそのファイルをどこに保存しているのか分かっているので、私はすべての人に「私の文書」の同じ場所に保管するように指示するように提案するつもりはありません。もし私がそれを示せば、私は笑われるだろう。

信じられないほど簡単なはずです。しかし、ユーザーが組み込みの開いているファイルダイアログから選択したディレクトリを取得できないようにする「セキュリティ手段」によって、作成された目的のためにダイアログを使用できなくなります。

代替手段は何ですか?これらの動的オブジェクトを使用してファイルを選択する方法はありますか?ファイルシステムを変更できるオブジェクトを使用して自分のファイル選択ツールを作成する必要がありますか?私はファイルを読むだけで何も必要ないので、どこかでファイルストリームにアクセスできる場所を読んでいるので、ファイルストリームを使ってファイルを開き、AutomationFactoryを使ってファイルを開く方法があります?

関連する問題