【发布时间】: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