1

昇格された許可なしにブラウザー内でSilverlight4アプリケーションを実行しています。その中に、OpenFileDialogウィンドウが表示されるファイルのアップロード機能セクションがあり、アップロードするファイルを選択してデータベースに保存できます。

問題は、アプリケーションが、Silverlightセキュリティポリシーで許可されていないユーザーのプロファイルフォルダー外のファイルに実際にアクセスできることです。

private Asset ReadAsset(FileInfo fileInfo)
    {
        byte[] fileBuffer;


        using (FileStream fileStream = fileInfo.OpenRead()) //This line works from any location
        {
            using (BinaryReader binaryReader = new BinaryReader(fileStream))
            {
                fileBuffer = binaryReader.ReadBytes((int)fileStream.Length);
                binaryReader.Close();
            }
            fileStream.Close();
        }
        DirectoryInfo di = fileInfo.Directory; //This line doesn't work
     }

これは実際には場所に関係なくファイルを読み取り(system32フォルダーのファイルを読み取ることもできます)、「MyDocuments」または「Documents」フォルダーを取得する手段がありません。Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

動かない。つまり、要するに。ブラウザで実行されているSilverlightアプリでは想定されていない、任意の場所の任意のファイルからバイトを読み取ることができます。

どんな助けでもありがたいです。

4

1 に答える 1

0

あなたが心配しているように思われるOpenFileDialogのは、クライアントファイルシステム内の場所に関係なく、どのファイルからでも読み取ることができるということです。

これは正常で正常です。信頼制限のあるOOBは、一方的なアクセスにのみ適用されます。これは、ユーザーによる直接および明示的な対話なしでのファイルシステムへのアクセスです。

ユーザーが選択するファイルを明示的に指定している場合OpenFileDialog、ユーザーは任意のファイルを自由に選択できます。これは、標準のブラウザアプリにも当てはまります。

于 2011-09-16T20:55:33.807 に答える