私はSilverlight 4アプリケーションをブラウザ内で実行していますが、その中にはOpenFileDialogウィンドウが表示されるアップロードファイル機能セクションがあり、ファイルをアップロードしてデータベースに保存します。Silverlight 4 FileInfo.OpenReadメソッドは、昇格されたアクセス許可を持たないフォルダで動作しています
問題は、アプリケーションが実際に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
}
これは実際のファイルに場所を関係なくREAD(私もsystem32フォルダ上のファイルを読むことができた)と私もあるため、「マイドキュメント」や「ドキュメント」フォルダを取得する手段がありません。 Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
動作しません。だから短いです。私はブラウザ上で実行されている銀色のアプリケーションが行うべきではない任意の場所の任意のファイルからバイトを読み取ることができます。
ご協力いただければ幸いです。
はい、OpenFileDialogを介してユーザーとのやりとりにユーザーアクセスプロファイルへのアクセスのみのセキュリティポリシーを適用する必要があると考えました。それを明確にしてくれてありがとう。 – oyemanueel