PDF文件通过网页链接直接预览和其它页面嵌套预览的访问控制方案
时间:2025-3-14 22:55 作者:Anglei 分类: WEB应用
本人使用的是IIS服务器软件,网站是一个PDF文件分享网站,有个需求就是不能让用于下载PDF文件,只能在线观看,我已经实现了PDF分块读取,今天发现直接访问PDF文件网址也能下载,这让我有点慌了,于是乎,查了一些资料,终于解决了这个问题,直接访问PDF则报403错误,如果本站其他网页嵌套访问的话,则可以正常预览,这正是我想要的,下面分享给大家
在 IIS 中实现 Referer 验证,可以通过 URL 重写 模块 配合条件规则来实现。以下是具体步骤:
步骤 1:打开 IIS, 选择网站,点击URL重写模块,配置 Referer 验证规则
场景需求
- 允许访问 PDF 的条件:
- 请求的
Referer
头包含你的网站域名(如your-website.com
)。 - 或 PDF 通过
<iframe>
或其它内嵌在网站页面中。
- 请求的
- 直接访问 PDF 链接时拒绝(返回 403)。
配置方法
添加新的 入站规则,配置如下:
设置项 | 值 |
---|---|
规则名称 | BlockDirectPDFAccess |
匹配 URL | 模式:.*\.pdf$ (匹配所有 PDF 文件) |
条件 | 添加以下条件: |
条件输入:{HTTP_REFERER} |
|
检查是否:与模式不匹配 | |
模式:^https?://([a-z0-9-]+\.)*your-website\.com(/.*)?$ |
|
操作 | 类型:自定义响应 |
状态码:403 |
|
子状态码:0 |
|
原因:Direct access forbidden |
关键配置详解
1. 正则表达式模式
^https?://([a-z0-9-]+\.)*your-website\.com(/.*)?$
- 匹配所有以
http://
或https://
开头,且域名包含your-website.com
的 Referer。 - 支持子域名(如
sub.your-website.com
)。 - 允许路径(如
your-website.com/page
)。
- 匹配所有以
2. 规则逻辑
- 如果请求的 URL 以
.pdf
结尾 且 Referer 头不匹配你的域名,则返回 403。
步骤 2:最终效果,来验证下
直接访问 PDF 链接(无 Referer 或 Referer 不匹配):
# 示例,打开浏览器,输入
https://your-website.com/pdfs/document.pdf
# 返回 403 Forbidden
通过网站页面内嵌访问:
<!-- 网站页面中内嵌 PDF -->
<iframe src="https://your-website.com/pdfs/document.pdf"></iframe>
- 请求会自动携带
Referer: https://your-website.com/page
,允许访问并预览。
增强方案(可选)
IP 白名单限制
仅允许服务器自身 IP 访问 PDF(适用于内嵌场景):
<rule name="AllowLocalEmbed">
<conditions>
<add input="{HTTP_REFERER}" pattern="your-website.com" />
<add input="{REMOTE_ADDR}" pattern="^192\.168\.1\.100$" /> <!-- 服务器 IP -->
</conditions>
</rule>
以上配置已在实际 IIS 环境中验证通过,可满足基础防护需求。

推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(1) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |