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

yizhihongxing

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实现Des加密算法代码实例

    下面是详细讲解“如何通过PHP实现Des加密算法代码实例”的完整攻略。 简介 Des加密算法是一种常见的对称加密算法,其中Des是数据加密标准(DES)的缩写。 在PHP中,可以通过mcrypt扩展库来使用Des加密算法。 安装mcrypt扩展 在使用mcrypt之前,需要安装mcrypt扩展。可以通过以下命令安装: sudo apt-get install…

    PHP 2023年5月23日
    00
  • php格式输出文件var_export函数实例

    PHP格式化输出文件var_export函数实例 在PHP中,var_export() 函数是一个非常实用的函数,用于输出或返回一个变量的字符串表示,它也可以将一个变量的值转化为 PHP 代码的形式,从而可以方便地保存和传递。 语法 var_export(mixed $expression [, bool $return = false ]) mixed $…

    PHP 2023年5月26日
    00
  • PHPCMS v9 安全设置、防范教程

    PHPCMS v9 安全设置、防范教程 在使用PHPCMS v9建站的时候,要注意安全问题。本文将介绍一些常见的安全设置和防范措施,以确保您的网站不会受到攻击。 1. 使用强密码 在PHPCMS v9后台登录时,建议使用复杂的密码,包含大小写字母、数字和符号。这样可以有效地防止被猜测或撞库攻击。 示例说明: 以下是一个例子,展示了一个很容易被攻击的密码: A…

    PHP 2023年5月24日
    00
  • 详解php中 === 的使用

    标题:详解PHP中===的使用 在PHP中,可以用“===”来进行严格比较,这是一个非常重要的运算符,需要我们详细了解和掌握。 一、运算符的含义 “===”是PHP中的一个三个等于号的运算符,其功能就是用于比较两个变量的值和类型是否相等,如果完全相等则返回true,否则返回false。 二、比较值和类型 下面通过两条示例说明如何比较值和类型是否相等。 1. …

    PHP 2023年5月26日
    00
  • php array_walk array_map array_filter区别案例详解

    下面是“php array_walk array_map array_filter 区别案例详解”的详细攻略。 什么是数组函数 PHP中提供了很多针对数组的函数,我们可以通过这些函数快速方便地处理和操作数组。常见的数组函数包括:array_walk、array_map和array_filter,这些函数都是用来遍历数组并进行处理的。 array_walk a…

    PHP 2023年5月26日
    00
  • php实现编辑和保存文件的方法

    首先需要明确的是,PHP可以通过打开文件句柄来编辑和保存文件。可以使用PHP的“文件打开/关闭”函数(fopen和fclose)和“读/写”函数(fread和fwrite)来操作文件。 下面是编辑文件的步骤: 首先要打开要编辑的文件,这可以通过使用PHP的fopen函数来实现。fopen函数需要两个参数,第一个参数是要打开的文件名,第二个参数是打开文件的模式…

    PHP 2023年5月23日
    00
  • PHP中str_replace函数使用小结

    下面是详细讲解“PHP中str_replace函数使用小结”的完整攻略: 概述 str_replace函数是PHP中一个非常常用的字符串替换函数,用于将字符串中的某一部分进行替换。 语法 函数的基本语法如下: str_replace(search, replace, subject, [count]); 其中,各个参数的含义为: search: 需要被查找和…

    PHP 2023年5月26日
    00
  • 云主机搭建php+mysql运行环境教程(护卫神 PHP套件)

    云主机搭建PHP+MySQL运行环境教程——护卫神PHP套件 前言 前几年随着互联网的发展,我们公司的业务也开始逐渐向线上转移。为了方便开发和部署,在一些小的项目中采用了PHP+MySQL的技术架构,因为其简单易懂,上手快。 但是在实际的开发中,我们遭遇了一些问题:服务器配置问题、PHP版本问题、MySQL版本问题等等。这些问题给我们带来了很多麻烦和困惑,于…

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