php简单防盗链实现方法

yizhihongxing

下面是详细讲解PHP简单防盗链实现方法的攻略:

什么是防盗链

防盗链是指在网站运营过程中,因为其他站点未经允许地使用了网站的图片、视频、音频等内容或者链接,直接调用了相关资源而占用了网站服务器带宽和资源,导致网站性能下降或者出现其他问题。为了解决这一问题,网站可以通过一定技术手段,对盗链行为进行识别并拒绝服务。

PHP简单防盗链实现方法

第一步:获取请求头referer信息

referer是一个HTTP头部字段,指示了产生了该请求的源URI。可以通过PHP中的$_SERVER['HTTP_REFERER']获取该信息。

示例代码:

$referer = $_SERVER['HTTP_REFERER'];

第二步:判断referer信息是否符合规则

针对盗链情况,可以设定一定规则,比如只允许某些站点调用资源,或者在某些情况下允许所有站点调用。通过判断referer是否符合规则,来确认是否允许访问。

示例代码:

// 允许所有来源站点
$allow = array();

if (empty($referer)) {
    // 没有referer,判定为不合法
    die('不合法请求');
}

$parse_url = parse_url($referer);
if (!isset($parse_url['host'])) {
    // 解析不出host,判定为不合法
    die('不合法请求');
}

$host = $parse_url['host'];
if (!in_array($host, $allow)) {
    // 不在允许的站点列表中,判定为不合法
    die('不合法请求');
}

第三步:返回资源

如果通过判断,referer信息符合规则,就可以返回相应资源了。将资源输出到浏览器即可。

示例代码:

// 输出图片
header("Content-type: image/jpeg");
readfile('/path/to/image.jpg');

// 输出视频
header("Content-Type: video/mp4");
readfile('/path/to/video.mp4');

示例说明

示例一:只允许特定站点调用图片资源

假设网站仅允许https://example.com站点调用图片资源。则可以将$allow的值设置为['example.com']。

$allow = array('example.com');

$referer = $_SERVER['HTTP_REFERER'];
if (empty($referer)) {
    // 没有referer,判定为不合法
    die('不合法请求');
}

$parse_url = parse_url($referer);
if (!isset($parse_url['host'])) {
    // 解析不出host,判定为不合法
    die('不合法请求');
}

$host = $parse_url['host'];
if (!in_array($host, $allow)) {
    // 不在允许的站点列表中,判定为不合法
    die('不合法请求');
}

// 输出图片
header("Content-type: image/jpeg");
readfile('/path/to/image.jpg');

示例二:允许所有站点调用视频资源

假设网站允许所有站点调用视频资源。则可以将$allow的值设置为空数组。

$allow = array();

$referer = $_SERVER['HTTP_REFERER'];
if (empty($referer)) {
    // 没有referer,判定为不合法
    die('不合法请求');
}

$parse_url = parse_url($referer);
if (!isset($parse_url['host'])) {
    // 解析不出host,判定为不合法
    die('不合法请求');
}

$host = $parse_url['host'];
if (!in_array($host, $allow)) {
    // 不在允许的站点列表中,判定为不合法
    die('不合法请求');
}

// 输出视频
header("Content-Type: video/mp4");
readfile('/path/to/video.mp4');

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php简单防盗链实现方法 - Python技术站

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

相关文章

  • PHP使用Swagger生成好看的API文档

    下面是“PHP使用Swagger生成好看的API文档”的完整使用攻略,包括Swagger的基本原理、PHP使用Swagger生成API文档的过程和两个示例。 Swagger的基本原理 Swagger是一种API文档生成工具,它可以根据API定义自动生成API文档。Swagger的基本原理是:定义API,生成API文档,提供API测试工具。 Swagger使用…

    PHP 2023年5月12日
    00
  • 怎样给PHP源代码加密?PHP二进制加密与解密的解决办法

    加密PHP源代码可以有效地保护代码的安全性,避免代码被恶意拷贝或者篡改。接下来,本篇文章将为大家介绍如何给PHP源代码加密以及PHP二进制加密与解密的解决办法。 一、加密PHP源代码 1. 使用Zend Guard Zend Guard是由Zend Technologies开发的一款广泛使用的加密软件,它可以将PHP源代码转换成Zend Optimizer可…

    PHP 2023年5月23日
    00
  • PHP字符函数大全第1/2页

    首先,对于“PHP字符函数大全第1/2页”的完整攻略,可以分为以下几个部分进行讲解: 概述:对该攻略的目的和涉及到的知识点进行简单介绍,并引导读者进入主题。 字符处理函数:分为字符串函数、字符集函数、正则表达式函数三大类进行介绍。 示例说明:以常用的字符串函数strlen和strpos为例,进行详细的操作说明和代码演示。 注意事项:对使用字符串函数时需要注意…

    PHP 2023年5月23日
    00
  • PHP常用特殊运算符号和函数总结(php新手入门必看)

    我来为你详细讲解“PHP常用特殊运算符号和函数总结(php新手入门必看)”的完整攻略。 一、概述 本文主要介绍 PHP 常用的特殊运算符和函数,这些内容对于 PHP 初学者来说非常重要,掌握这些知识点能够帮助你更加熟练地使用 PHP 编程。 本文所涉及的特殊运算符包括:三元运算符、递增递减运算符、比较运算符、逻辑运算符等;所涉及的函数包括:字符串函数、数组函…

    PHP 2023年5月26日
    00
  • php数组查找函数in_array()、array_search()、array_key_exists()使用实例

    PHP数组查找函数in_array()、array_search()、array_key_exists()使用实例攻略 在PHP中,经常需要对数组进行查找,PHP提供了三个常用的函数:in_array(), array_search(), array_key_exists()来对数组进行查找。本篇攻略将详细讲解这三个函数的使用实例,帮助大家更好地掌握PHP数…

    PHP 2023年5月26日
    00
  • PHP初学者常见问题集合 修正版(21问答)

    下面是详细讲解“PHP初学者常见问题集合 修正版(21问答)”的完整攻略。 1. 关于PHP 1.1 PHP是什么? PHP是一种开源的服务器端脚本语言,它用于创建动态网页。PHP脚本在服务器执行,生成HTML输出给客户端浏览器。 1.2 PHP的优点是什么? 免费开源,跨平台支持; 易于学习,入门门槛低,语法简单; 功能强大,支持数据库访问、文件操作等; …

    PHP 2023年5月24日
    00
  • php实现pdo数据库操作类过程详解

    PHP实现PDO数据库操作类过程详解 PDO是PHP的一个数据库抽象层,可以让我们使用统一的方式来操作不同的数据库。在实际开发中我们通常会封装一个PDO数据库操作类,以便于更方便地进行数据库操作。下面是一个PHP实现PDO数据库操作类的完整攻略。 步骤 使用PDO数据库操作类的步骤如下: 连接数据库 在PDO数据库操作类中,我们需要先连接数据库。PDO的构造…

    PHP 2023年5月12日
    00
  • PHP实现导出带样式的Excel

    接下来我会详细讲解“PHP实现导出带样式的Excel”的完整攻略。 一、背景介绍 在实际的开发工作中,我们常常需要使用到Excel表格,然而PHP并没有内置的类或函数可以直接导出带样式的Excel,因此我们需要借助一些第三方工具来实现。 二、选择合适的第三方工具 市场上有很多第三方工具可以帮助我们实现导出Excel的功能,例如PHPExcel、PhpSpre…

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