You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止访问WordPress站点wp-content/uploads目录下的上传资源

WordPress站点图片直链拦截解决方案

常见失效原因

  • 「Prevent Direct Access」类插件失效,大多是因为静态图片请求被服务器、缓存插件直接返回,没有经过WordPress的PHP处理流程,插件的拦截逻辑无法触发
  • 现有.htaccess规则的核心逻辑漏洞是第一条判断过滤了空Referer的请求,用户直接在地址栏输入图片URL时Referer为空,会直接绕过拦截规则。同时要先确认Apache配置符合要求:
    • 确认Apache已开启mod_rewrite扩展
    • 确认站点vhost配置中AllowOverride参数设置为All,否则.htaccess规则不会被加载

修复后的规则配置

Apache服务器(.htaccess)

<IfModule mod_rewrite.c>
RewriteEngine On
# 允许指定域名的Referer访问
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.be [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?facebook.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?twitter.com [NC]
# 空Referer也拦截
RewriteCond %{HTTP_REFERER} ^$
RewriteRule \.(jpg|jpeg|png|gif)$ - [F,L]
</IfModule>

Nginx服务器

Nginx默认不支持.htaccess,需要直接修改站点配置文件添加如下规则:

location ~* \.(jpg|jpeg|png|gif)$ {
    valid_referers mydomain.be www.mydomain.be google.com www.google.com facebook.com www.facebook.com twitter.com www.twitter.com;
    if ($invalid_referer) {
        return 403;
    }
}

更高安全性的方案

普通防盗链规则可以被伪造Referer绕过,要彻底杜绝直链访问可以用PHP鉴权方案:

  • 修改wp-content/uploads目录权限,禁止对外直接访问
  • 在主题functions.php中添加自定义代码,将所有图片的输出链接修改为带加密参数的PHP路由地址
  • 新增图片处理路由,校验请求参数是否合法,校验通过后再读取本地图片文件返回响应

辅助防护手段

  • 所有原图自动添加水印,即使被盗取也保留来源标识
  • 修改WordPress默认上传目录路径,避免用户通过通用路径猜解访问
  • 如果使用CDN服务,直接在CDN控制台配置防盗链规则,生效更快还能减少源站请求压力

内容的提问来源于stack exchange,提问作者Killian Graas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:24:05