【问题标题】:IIS Virtual Folder URL encryptionIIS 虚拟文件夹 URL 加密
【发布时间】:2011-01-20 23:52:02
【问题描述】:

我们有 ac# asp.net web 应用程序,除其他外,它允许用户下载以前上传的文件,例如 PDF、Word 文档等。asp.net 应用程序通过 IIS6 服务器提供服务,文件资源是实时的在不同的服务器上。

当用户请求文件时(即单击 Web 表单上的按钮),我们将文件流式传输回他们的浏览器,相应地更改 ContentType。

这似乎是避免通过 IIS 虚拟文件夹路由来提供文件资源的好方法——我们担心用户可能会破解 URL。即使用像 https://mydomain/myresource/clientid/myreport.docx 这样的 URL,精明的用户可以很好地猜测替代 cvlientid 和文档名称。

将 Word 文档流式传输到浏览器的问题在于,当浏览器将其扔给 Word 时,Word 会将其视为全新的文档,这意味着原始文档的属性和边距信息会丢失。

我们的用户将元数据信息存储在 Word 文档属性中,因此他们无法接受这种解决方案。

通过 IIS 虚拟文件夹提供服务解决了这个问题,但引入了 URL 安全问题。

所以我的问题是......

有谁知道我们如何对 IIS 虚拟文件夹使用 URL 加密/解密(或混淆)?
或者有谁知道做类似工作的任何开源项目。
或者是否有人对如何编写我们自己的虚拟文件夹实现但使用加密 URL 有任何建议?

非常感谢。

ps。我们的网络应用程序通过 https 交付

【问题讨论】:

  • 您能否详细说明“Word 将其视为全新文档,这意味着原始文档的属性和边距信息丢失”?我们通过经过身份验证的 httphandler 进行流式传输,没有任何问题,弹出一个框来保存文件,这是你在做什么吗?
  • 是的,弹出框打开或保存文件。如果客户端保存它,则服务器版本上存在的任何属性(标题、主题、标签等)都不存在于客户端副本中。
  • hmmm,刚刚对虚拟文件夹进行了另一次测试,当我说“通过 IIS 虚拟文件夹提供服务解决了这个问题”时,看起来我犯了一个错误。也许我的问题是“如何在通过客户端浏览器传递 Word docx 文件时保留元数据属性(如标题、主题)
  • 仅供参考,您永远无法“破解”查询字符串。您需要通过该用户授权的查询字符串来验证对数据的任何请求。

标签: c# asp.net iis iis-6 virtual-directory


【解决方案1】:

您可能会发现“Windows Identity Foundation”中的ClaimsAuthorizationManager 类可以满足您的需求。您可以实现任何您喜欢的逻辑来确定谁可以在不使用“目录安全”的情况下下载什么。

【讨论】:

    【解决方案2】:

    抱歉各位,在我的问题中,我做了一些不正确的假设。

    我想要做的是将存储在 word 文档中的属性从服务器(使用 Response.TransmitFile 或通过虚拟文件夹)传递到客户端浏览器时持久保存。

    我使用 IIS 虚拟文件夹设置了一个测试场景,并在我的虚拟文件夹的物理路径中放置了一个 docx 文件(我知道该文件包含标题和主题属性中的信息)。

    我将浏览器指向虚拟文件夹别名,浏览器弹出消息以打开或保存文档。

    如果我选择保存它,保存的 docx 仍然具有完整的属性。

    如果我选择先打开它然后从 Word 中保存它,则保存的 docx 会丢失属性。

    所以我想我需要发布一个不同的问题!

    【讨论】:

      猜你喜欢
      • 2013-05-09
      • 2017-08-27
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2011-12-03
      • 2010-10-03
      相关资源
      最近更新 更多