1

我有一个 Silverlight 4 应用程序在没有提升权限的情况下在浏览器中运行,其中我有一个上传文件功能部分,其中会出现一个 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 文件夹中的文件),并且我无法获取“我的文档”或“文档”文件夹,因为即使。Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

不管用。所以简而言之。我可以从浏览器上运行的 silverlight 应用程序不应该做的任何位置的任何文件中读取字节。

任何帮助将不胜感激。

4

1 回答 1

0

我认为您似乎担心的是,OpenFileDialog无论文件在客户端文件系统中的位置如何,都可以读取任何文件。

这很好,很正常。具有信任限制的 OOB 仅适用于未经请求的访问。即无需用户直接和显式交互即可访问文件系统。

OpenFileDialog用户明确指定要选择的文件的情况下,用户可以自由选择他们想要的任何文件。即使对于标准的浏览器应用程序也是如此。

于 2011-09-16T20:55:33.807 回答