Referer原理与图片防盗链实现方法详解

Referer原理与图片防盗链实现方法详解

Referer原理

HTTP定义了一个header字段叫做Referer(简写为Referrer),用于指示请求的来源页面,即访问当前页面的前一个页面(所谓的HTTP Referer指的就是这个header字段的值)。常见的应用场景有:统计网站访问来源;防盗链。

在HTTP请求头中,可以使用如下格式传递Referer信息:

Referer: http://example.com/path/to/page.html

当浏览器向服务器发送请求时,会在请求头中加入Referer信息。服务器可以通过解析这条请求头,来确定请求的来源。

图片防盗链实现方法

防盗链指的是在不允许非授权访问的情况下,防止网站被其他网站盗用。图片防盗链的实现方法是基于Referer原理的。具体方法如下:

方法一:通过服务器筛选Referer

服务器配置可以通过判断Referer是否符合某种特定的条件,来决定是否允许访问。常见的条件包括:只允许来自白名单内的网站访问、只允许来自自己网站的请求访问等。具体实现方式可以是在服务器上使用htaccess文件,或者通过代码实现。以下是.htaccess文件配置白名单的示例:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www.)?example.com [NC]
RewriteRule .*\.(jpg|jpeg|png|bmp|gif)$ - [F]

上述代码表示,如果Referer为空或者Referer不是来自example.com,则返回403 Forbidden状态码,即拒绝访问。

方法二:使用前端JavaScript防盗链

在HTML文件中,使用JavaScript来判断当前页面的Referer,如果不符合条件,则不加载该图片。在HTML中添加以下代码:

<img src="example.jpg" alt="example" id="img">
<script>
    if (document.referrer !== "http://example.com/path/to/page.html") {
        document.getElementById("img").style.display = "none";
    }
</script>

上述代码表示,如果Referer不是来自http://example.com/path/to/page.html,则不显示图片。

示例说明

示例一:防盗链白名单

网站A有一张独家图片,需要在官网上显示,但不希望这张图片被其他网站盗用。因此,网站A在服务器上配置了一个白名单,只允许来自自己官网的请求可以访问这张图片。

示例二:使用JavaScript防盗链

网站B的首页需要显示一张背景图片,但该图片只希望在来自搜索引擎的访问请求中显示,而不希望被其他网站盗用。网站B在HTML文件中添加了JavaScript验证,只有当Referer来自搜索引起发起的请求,才会显示该背景图片。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Referer原理与图片防盗链实现方法详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 学习php设计模式 php实现访问者模式(Visitor)

    学习PHP设计模式是我们提高PHP技能的一个必要过程。设计模式是一种通用解决方案,用于解决常见的面向对象编程问题。本文将讲解PHP实现访问者模式的完整攻略,包括对访问者模式的介绍、访问者模式的实现步骤,以及基于PHP实现的两个示例说明。 什么是访问者模式? 访问者模式是一种行为型设计模式,它使得你能够在不改变元素类(被访问的对象)的前提下,定义作用于这些元素…

    PHP 2023年5月27日
    00
  • 微信小程序实现图片上传功能实例(前端+PHP后端)

    下面是对实现微信小程序图片上传功能的完整攻略: 1. 实现方式 微信小程序实现图片上传功能可以通过前端和后端结合实现。具体实现的步骤如下: 前端通过选择和上传图片获取图片文件; 前端发送图片文件给后端处理; 后端处理图片,并返回图片路径给前端; 前端将图片路径展示在页面中。 下面是具体的实现步骤和示例说明。 2. 前端实现 2.1 选择和上传图片 前端可以通…

    PHP 2023年5月23日
    00
  • 解析PHP之提取多维数组指定列的方法

    接下来我将详细讲解“解析PHP之提取多维数组指定列的方法”的完整攻略。 前言 PHP是一种服务器端脚本语言,其中数组是其最常用的数据类型之一。在PHP开发过程中,开发者经常需要从多维数组中提取指定的一列,这时候就需要使用PHP的相关函数来实现这个功能了。 方法一:使用foreach循环 使用foreach遍历多维数组,然后将指定列的值取出来,再组成一个新的数…

    PHP 2023年5月26日
    00
  • php实现文件下载更能介绍

    实现文件下载需要两个步骤:1. 服务器设置响应头;2. 创建文件下载链接。 1.服务器设置响应头 服务器通过设置响应头来告诉浏览器当前请求是下载文件,浏览器收到响应头后会按照响应头的内容来处理响应体,从而实现文件下载。 使用PHP来设置响应头,需要使用header()函数来设置。示例代码如下: //设置响应头 header(‘Content-Type: ap…

    PHP 2023年5月27日
    00
  • 浅析php中array_map和array_walk的使用对比

    以下是“浅析PHP中array_map和array_walk的使用对比”的完整攻略。 概述 array_map 和 array_walk 都是 PHP 对数组进行处理的函数,它们分别有各自的优劣点,下面我们就来对它们进行详细的对比分析。 array_map 函数 语法 array_map (callable $callback, array …$arrs…

    PHP 2023年5月26日
    00
  • laravel 输出最后执行sql 附:whereIn的使用方法

    首先,我们需要在 Laravel 应用程序的设置文件 config/app.php 中将 debug 选项设置为 true,以开启调试模式。然后在代码中使用 DB::enableQueryLog() 方法启用查询日志,将执行的 SQL 语句记录下来。接着使用 DB::getQueryLog() 方法获取执行的 SQL 查询日志。 下面是具体步骤和代码示例: …

    PHP 2023年5月26日
    00
  • 微信小程序uploadFile接口实现文件上传

    下面是详细的攻略: 1. 查看文档 在开始实现之前,我们首先需要查看微信小程序官方文档中的uploadFile接口的说明。 该接口用于将本地资源上传到服务器。需要注意以下几点: 文件上传的大小限制是 50 MB。 支持 HTTP POST 、HTTP PUT 方式上传。 支持同时上传多个文件。 支持上传图片、视频、音频等类型的文件。 支持设置请求头和自定义 …

    PHP 2023年5月23日
    00
  • php中url函数介绍及使用示例

    下面是详细的“php中url函数介绍及使用示例”的攻略。 PHP中的URL函数介绍及使用示例 什么是URL? 在计算机领域中,URL(Uniform Resource Locator,统一资源定位器)用于定位万维网上的资源。简单来说,URL就是一个用于定位网络上资源的地址。 在Web应用程序中,URL是指特定页面或资源的网址。例如,这里的https://ww…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部