织梦图片防盗链如何设置
图片被盗链的影响
织梦DedeCMS站点通常会有大量图片资源,如果不做防盗链,其他网站可以直接引用你的图片URL,让图片在别人站点上显示,但流量和带宽消耗都在你的服务器上。图片被盗链会导致:服务器带宽被大量占用、网站访问变慢、流量成本飙升,严重时甚至拖垮服务器。设置图片防盗链,是保护服务器资源、维持站点正常访问的必要措施。
一、Nginx 防盗链配置
Nginx 通过检查请求头中的 Referer 字段判断请求来源,只允许来自本站的请求访问图片。在 server 配置块中加入:
location ~* \.(jpg|jpeg|png|gif|webp|svg|bmp|ico)$ {
valid_referers none blocked server_names
*.example.com example.com;
if ($invalid_referer) {
return 403;
# 或重定向到防盗链提示图
# rewrite ^/ https://www.example.com/nohotlink.jpg;
}
}
参数说明
none:允许无Referer的请求(直接访问图片URL)。blocked:允许Referer被防火墙删除的请求。server_names:允许本站域名作为Referer。*.example.com:允许的域名白名单,可加多个。
二、Apache 防盗链配置
Apache 通过 .htaccess 文件配置防盗链,需要 mod_rewrite 模块支持。在网站根目录 .htaccess 中添加:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www\.)?example\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?baidu\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^https://(www\.)?bing\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|webp|svg)$ - [F,NC]
逻辑:如果Referer不为空,且不是本站和搜索引擎域名,访问图片就返回403。如果想返回防盗链提示图,把 [F,NC] 改为跳转:
RewriteRule \.(jpg|jpeg|png|gif)$ /nohotlink.jpg [R=302,L,NC]
三、IIS 防盗链配置
IIS 通过 web.config 配置防盗链,需要安装 URL Rewrite 模块:
<system.webServer>
<rewrite>
<rules>
<rule name="防盗链" stopProcessing="true">
<match url=".*\.(jpg|jpeg|png|gif|webp)$" ignoreCase="true" />
<conditions>
<add input="{HTTP_REFERER}" pattern="^$" />
<add input="{HTTP_REFERER}" pattern="^https://(www\.)?example\.com/" negate="true" />
</conditions>
<action type="AbortRequest" />
</rule>
</rules>
</rewrite>
</system.webServer>
四、各方案对比
| 方案 | 实现难度 | 防护效果 | 缺点 |
|---|---|---|---|
| Referer校验 | 低 | 中(能防常规盗链) | Referer可伪造 |
| URL签名 | 高 | 高(难伪造) | 需改程序,图片URL变长 |
| Token验证 | 高 | 高 | 需后端配合 |
| CDN防盗链 | 低 | 高 | 依赖CDN服务商 |
五、CDN 层防盗链
如果站点使用了CDN(如阿里云CDN、腾讯云CDN、Cloudflare),直接在CDN控制台开启防盗链更高效,因为请求在CDN层就被拦截,不会回源到你的服务器。CDN防盗链通常支持:
- Referer白名单/黑名单配置。
- IP黑白名单。
- URL签名鉴权(更安全,防伪造Referer)。
- UA过滤。
六、防盗链提示图设计
比起直接返回403,返回一张防盗链提示图更友好,还能起到品牌宣传作用。提示图设计要点:
- 图片体积要小(10KB以内),避免占用带宽。
- 内容提示「本图片仅限站内访问」,可加站点Logo。
- 格式用jpg或png,避免用gif动画。
- 放在不被防盗链规则拦截的目录,或单独放一个不受保护的图片。
注意提示图本身不能被防盗链规则拦截,否则盗链站显示的是403而非提示图。可以把提示图放在单独子域或加白名单。
注意事项与常见问题
- 误伤RSS订阅: RSS阅读器抓取图片时Referer可能不符合白名单,需把主流阅读器域名加入白名单。
- 影响图片搜索: 白名单务必包含百度、必应、谷歌等搜索引擎域名,否则图片搜索结果无法显示缩略图。
- Referer可伪造: Referer校验只能防普通盗链,专业盗链者可伪造Referer绕过。高价值图片建议用URL签名。
- https混合内容: 防盗链提示图如果是http,在https页面会报混合内容错误,确保提示图也用https。
- 测试验证: 配置后用第三方工具模拟盗链访问,确认规则生效;同时测试本站正常访问不受影响。
防盗链的长期维护
防盗链配置上线后,建议定期查看服务器日志或CDN统计,分析被拦截的盗链请求来源,根据实际情况调整白名单和规则。如果发现带宽异常波动,及时排查是否有新的盗链源。对于原创图片资源密集的织梦站点,防盗链是保护内容资产和服务器成本的基础措施,配合图片水印、CDN加速,能形成完整的图片资源保护体系。把防盗链纳入服务器安全配置的常规项,长期执行,才能让站点资源不被无谓消耗。