2

我正在寻找一种限制 .pdf 文件由用户下载但可由 aspx 或 asp 检索的解决方案,我尝试将以下行添加到网站根目录中 system.web 标记内的 web.config 文件中:

<httpHandlers>
    <add verb="*" path="*.pdf" type="System.Web.HttpForbiddenHandler" />
</httpHandlers>

但是当我访问该网站时发生内部服务器错误。有谁知道如何做到这一点,我正在 Windows 7 上的 IIS 7 上对其进行测试。

更新
我已成功配置:

<add name="NoPdfAllowed" verb="*" path="download/*.pdf" 
   type="System.Web.HttpForbiddenHandler" />
</handlers>

但是我有一个 java 小程序插件(一个 html/asp/aspx 页面),在我在 web.config 文件中添加上述行后无法打开 pdf。是否可以启用能够加载 pdf 的 java 小程序?

4

2 回答 2

1

将pdf文件放在web目录之外怎么样?

创建一个名为 C:\pdf-files\ 的目录,并在此目录中授予互联网用户读取权限。这样,您的 asp 和 aspx 文件可以将这些文件用于您需要的任何内容,但访问该站点的用户无法访问它们?

但是,如果您使用 adostream 或类似的功能,用户可能仍然能够下载流式传输的内容......

于 2013-06-26T09:19:56.617 回答
0

如果我理解您的问题,您希望禁止通过“直接”url 下载 pdf 文件,但无论如何都允许通过客户端下载它们(java 小程序)。这是一种如何制作圆圆的方法:)

我在我的爱好废弃软件网站上使用这个系统来下载 zip 文件:

  • 将 pdf 文件从网站目录中删除或像您已经做的那样禁止它们的扩展名
  • 当使用 java 小程序为 .aspx 页面提供服务时,生成包含唯一标识符和 pdf 文件名的唯一令牌(比如说新的 guid),将其存储在 http 缓存中(如果您使用单框作为服务器)或 db/scaleout(网络农场),将此令牌标识符传递给小程序,此令牌应该只有有限的生命周期
  • 创建将提供 pdf 文件的 HttpHandler,此处理程序将(在提供 pdf 之前)通过令牌 id 检查令牌是否存在且仍然有效,并在提供 pdf 文件后使此令牌无效
  • 您还可以检查 Referrer 是否与您的域匹配,但我不建议这样做,某些浏览器没有正确设置该域名

这样用户仍然可以下载 pdf 文件,但下载链接只能使用一次,因此他们无法链接您的内容(至少不那么容易)。

于 2013-06-26T09:45:02.993 回答