PHP实现防盗链的方法分析

本文实例讲述了PHP实现防盗链的方法。分享给大家供大家参考,具体如下:
$_SERVER['HTTP_REFERER']的获取情况
注意 $_SERVER['HTTP_REFERER'] 并不一定总能获取到,只有在以下情况下才能获取到:
一、能够取到HTTP_REFERER的情况为以下几种:
1.直接用
2.用Submit或<input type=image>提交的表单(POST or GET)
3.使用Jscript提交的表单(POST or GET)

二、不能取到的情况有以下几种:
1.从收藏夹链接
2.单击”主页”或者自定义的地址
3.利用Jscript的location.href or location.replace()
4.在浏览器直接输入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或转向
7.用XML加载地址
strrpos函数讲解:
strrpos — 计算指定字符串在目标字符串中最后一次出现的位置
说明
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
返回字符串 $haystack 中 needle 最后一次出现的数字位置。
$haystack 在此字符串中进行查找。
$needle 如果 needle不是一个字符串,它将被转换为整型并被视为字符的顺序值。

返回值
返回 needle 存在的位置。如果没有找到,返回 FALSE。
盗链判断代码:asd.php

';
  }
  else{
    header("Location:warning.php");//跳转页面到warning.php
    //echo $_SERVER["HTTP_REFERER"];
  }
}
else {
  header("Location:warning.php");
}
?>

warning.php

倒链

防盗链验证代码

Insert title here
验证防盗链

上面是理解原理
一般通过配置服务器防盗链,如nginx配置访问
(gif|jpg|jpeg|png|bmp|swf) 等文件的白名单

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/4001.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2017年12月7日 11:08
下一篇 2017年12月8日 11:30

相关推荐

  • 小编教你php子类调用父类的方法有哪些。

    在PHP中,子类可以通过调用父类的方法来实现自己的行为。在子类中,可以使用parent::__construct()方法调用父类的构造函数来设置继承的属性。在子类中,可以访问继承的公共和保护属性,但不能直接访问继承的私有属…

    2024年7月28日
    00
  • 我的php学习第二十六天——流程控制

    流程控制 PHP有三种流程控制结构:顺序结构,分支结构,循环结构 默认的,代码的执行结构都是顺序结构。代码一行一行从上往下执行。顺序结构是程序代码的最基本结构。 分支结构:一段代码根据不同的条件执行不同的…

    2017年5月3日 PHP自学教程
    0357
  • PHP字符串类型string

    js中,虽然有2种字符串表达形式,但也应该理解为是一种字符串: var  str1 = ‘单引号字符串’ var   str2 = “双引号字符串”; 但在php中,单引号和双引哈字符串,是有不同细节含义的字符串。   php中,有4种字符…

    2018年3月14日
    0383
  • PHP中如何进行持续集成和持续交付?

    随着软件开发的快速发展,持续集成和持续交付已经成为现代软件开发中不可或缺的技术。作为一种流程和文化,持续集成和持续交付可以帮助开发团队更快、更高效地开发和部署软件,同时也可以保证软件的质量和稳定性。…

    2023年5月17日
    02
  • PHP中如何进行AR和VR应用开发?

    在过去的几年中,增强现实(AR)和虚拟现实(VR)技术已经得到了广泛应用,为用户提供了更加真实的体验。这种技术被广泛运用于游戏、娱乐、教育和医疗等领域。PHP是一门流行的Web开发语言,被广泛用于应用程序的开…

    2023年5月17日
    08
  • 浅谈PHP中isset()、empty()、is_null()的区别

    在PHP中,isset()、empty()和is_null()都可用于测试变量的值,那么它们之间有什么差异呢?下面本篇文章就来对比一下这三个函数,了解一下它们的区别。让我们从一些定义开始。isset() : 你可以用isset() 来确定一个…

    2023年3月29日
    04
  • 如何进行PHP的安全管理?

    PHP作为一种开源的编程语言,广泛应用于Web开发领域。然而,随着网络安全威胁不断增加,对PHP应用的安全管理也变得越来越重要。在这篇文章中,我们将探讨如何进行PHP的安全管理,以保障应用的安全性。优化代码在编…

    2023年5月17日
    02
  • PHP入门指南:Laravel框架。

    在当今的互联网时代,网站开发是一个异常火热的行业,而PHP语言则成为了众多程序员的首选开发语言之一。PHP语言的开源性质让它在开发社区中迅速流行,并逐渐形成了一些优秀的PHP框架。其中,Laravel框架就是一款颇…

    2023年5月22日
    02

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息