织梦如何有效防盗图盗链?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 织梦建站 正文

防止盗图(盗链)的核心方法

防止盗图的核心思路是:识别请求来源,只允许自己网站内的页面正常调用图片,阻止外部网站直接引用图片链接。

最常用且最有效的方法是使用 .htaccess 文件进行服务器端配置,这需要你的服务器环境是 Apache

方法1:使用 .htaccess 防止图片盗链(推荐)

这是最经典、最有效的方法,通过检查 HTTP_REFERER(请求来源页面的地址)来判断请求是否合法。

操作步骤:

  1. 找到 .htaccess 文件

    • 通常位于你的网站根目录下(/public_html//wwwroot/)。
    • 如果没有,你可以新建一个文本文档,命名为 .htaccess(注意前面的点),然后上传到网站根目录。
  2. 编辑 .htaccess 文件: 在文件中添加以下代码,请将 http://www.yourdomain.com 替换成你自己的网站域名。

    # 防止图片、视频等文件被盗链
    RewriteEngine On
    # 定义允许的域名(多个域名用 | 隔开)
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?baidu.com [NC] # 可选:允许百度等搜索引擎抓取
    RewriteCond %{HTTP_REFERER} !^$ # 可选:允许空referer(例如用户直接在浏览器输入图片地址访问)
    # 定义要保护的文件类型
    RewriteRule \.(jpg|jpeg|png|gif|bmp|swf|flv|mp3|wma|wmv|svg|ico)$ - [F,NC,L]

    代码解释:

    • RewriteEngine On:开启 Apache 的重写引擎。
    • RewriteCond:设置重写条件,可以理解为“如果满足以下条件,则执行下面的重写规则”。
      • %{HTTP_REFERER}:获取请求来源地址。
      • !^http(s)?://(www\.)?yourdomain.com [NC]:如果来源地址 不包含 http://www.yourdomain.comhttps://www.yourdomain.comNC 表示不区分大小写),则条件成立。
      • !^$:如果来源地址为空(即用户直接在浏览器输入图片URL访问),也成立,这个选项可以根据需要决定是否加上。
    • RewriteRule:设置重写规则。
      • \.(jpg|jpeg|png|gif|bmp|swf|flv|mp3|wma|wmv|svg|ico)$:匹配所有以这些后缀结尾的文件。
      • - [F,NC,L]
        • 表示不进行重写,直接执行一个操作。
        • [F]Forbidden,禁止访问,服务器会返回 403 错误页面。
        • [NC]:No Case,不区分大小写。
        • [L]:Last,表示这是最后一条规则,匹配后不再继续匹配其他规则。
  3. 保存并上传: 将修改后的 .htaccess 文件上传到网站根目录,覆盖原文件。

效果: 当其他网站尝试直接使用你的图片链接时,访问者看到的将是浏览器默认的 403 Forbidden 错误页面,图片无法正常显示,而你的网站内部页面调用图片则完全不受影响。


针对 Nginx 服务器的配置

如果你的服务器是 Nginx,配置方法与 Apache 不同,需要在 Nginx 的配置文件(通常是 nginx.conf 或站点配置文件)中进行设置。

# 在 server 块内添加以下配置
location ~* \.(jpg|jpeg|png|gif|bmp|swf|flv|mp3|wma|wmv|svg|ico)$ {
    # 设置允许的域名,多个域名用空格隔开
    valid_referers none blocked server_names
                   http://www.yourdomain.com
                   http://yourdomain.com;
    # 如果来源不在允许列表中,则返回 403
    if ($invalid_referer) {
        return 403;
    }
}

代码解释:

  • location ~* \.(...):匹配所有指定的文件类型, 表示不区分大小写的正则匹配。
  • valid_referers:定义合法的来源。
    • none:允许没有 Referer 的情况(直接访问)。
    • blocked:允许 Referer 被防火墙或代理服务器隐藏的情况。
    • server_names:允许访问当前服务器的域名。
    • 后面跟上你自己的域名。
  • if ($invalid_referer):如果来源不在 valid_referers 列表中,$invalid_referer 变量将为真,则执行 return 403,返回禁止访问。

织梦(DedeCMS)系统级优化

除了服务器端的硬核防御,我们还可以在织梦系统层面做一些优化,从源头上减少被盗的风险。

方法1:使用织梦自带的水印功能

这是最直接的方法,在图片上传时自动添加你的网站水印。

操作步骤:

  1. 登录织梦后台。
  2. 进入 【系统】 -> 【系统基本参数】 -> 【附件设置】
  3. 找到以下几项并进行设置:
    • WaterMarkEnable:设置为 ,开启水印功能。
    • WaterMarkText:输入你的水印文字,如 你的网站名
    • WaterMarkFont:选择字体,建议使用 .ttf 格式的字体文件,并上传到 /include/fonts/ 目录。
    • WaterMarkFontColor:设置水印颜色,如 #FFFFFF (白色)。
    • WaterMarkImage:可以上传一个 logo 图片作为水印。
    • WaterMarkPos:设置水印位置,如 9 (随机位置)。
    • WaterMarkTransparent:设置透明度,建议 50 - 80,太明显影响美观,太低则容易被去除。
    • WaterMarkMaxWidthWaterMarkMaxHeight:设置水印最大宽高,通常设置为图片的宽高百分比,如 50 (表示图片宽高的50%)。

效果: 即使图片被盗取,上面也会带有你的网站标识,增加了盗图者的处理成本,并起到了品牌宣传的作用。

方法2:禁用右键和图片拖拽(前端防御)

这种方法是“障眼法”,不能从根本上防止盗图(懂技术的人可以轻易绕过),但对于普通用户和初级爬虫有一定效果。

操作步骤:

  1. 在织梦后台,进入 【模板】 -> 【默认模板管理】**。

  2. 找到你需要修改的模板文件,通常是 index.htm (首页)、article_article.htm (文章页)、list_article.htm (列表页) 等。

  3. <head></head> 标签之间,添加以下 JavaScript 代码:

    <script type="text/javascript">
    // 禁用右键菜单
    document.oncontextmenu = function() {
        return false;
    };
    // 禁用图片拖拽
    document.addEventListener('dragstart', function(e) {
        if (e.target.tagName === 'IMG') {
            e.preventDefault();
        }
    }, false);
    // 禁用图片选择
    document.addEventListener('selectstart', function(e) {
        if (e.target.tagName === 'IMG') {
            e.preventDefault();
        }
    }, false);
    </script>

效果: 用户无法通过鼠标右键保存图片,也无法直接拖拽图片到桌面或本地,但请注意,用户仍然可以通过浏览器截图、开发者工具修改代码等方式获取图片。


综合建议与最佳实践

为了达到最佳的防盗链效果,建议采用 “组合拳” 策略:

  1. 基础防御(必须做)

    • 使用 .htaccess (Apache) 或 Nginx 配置,这是最核心、最有效的手段,能从根源上阻止大部分盗链行为,节省服务器资源。
  2. 内容加固(强烈推荐)

    • 开启织梦水印功能,即使图片被盗,也能带上你的标识,起到品牌宣传和威慑作用。
  3. 用户体验优化(可选)

    • 禁用右键和拖拽,作为辅助手段,可以增加普通用户盗图的难度。
  4. 内容溯源(终极手段)

    • 如果你发现图片被大规模盗用,可以通过 搜索引擎图片搜索以图搜图 工具找到盗图网站。
    • 然后向对方的网站主机服务商(ICP备案信息里可以查到)发送侵权投诉邮件,要求对方下架内容,这是法律途径,通常对有备案的网站比较有效。
方法 层面 优点 缺点 推荐度
.htaccess / Nginx 服务器端 效果最好,节省资源,一劳永逸 需要服务器权限,对Nginx和Apache配置不同 ★★★★★ (必做)
织梦水印 系统级 上增加盗取成本,有品牌宣传作用 不能阻止盗取,可能影响图片美观 ★★★★☆ (强烈推荐)
禁用右键/拖拽 前端 简单易用,对小白用户有效 技术人员可轻松绕过,治标不治本 ★★☆☆☆ (辅助手段)

对于绝大多数网站来说,使用 .htaccess 防盗链 + 开启织梦水印 是性价比最高、效果最显著的最佳组合方案。

-- 展开阅读全文 --
头像
织梦html5免费模板哪里下载?
« 上一篇 01-14
2025年二级C语言真题考什么?
下一篇 » 01-14

相关文章

取消
微信二维码
支付宝二维码

目录[+]