防盗链处理

盗链概念:

盗链是指在自己页面上展示并不在自己服务器上的内容。

<?php
//获取referer 从a.html来的没有referer参数,而从b.html来的有referer参数
  if(isset($_SERVER['HTTP_REFERER']))
  {
      if(strpos($_SERVER['HTTP_REFERER'],"http://localhost/")==0)//判断$_SERVER['HTTP_REFERER']是不是以http://localhost/开始的
      {
       echo "username:kyx password:123456";
      } else  header("Location:warning.php");//跳转页面到warning.php
   } else header("Location:warning.php");
   
?>

referer

Nginx模块ngx_http_referer_module用于阻挡来源非法的域名请求

Nginx指令valid_referer,全局变量$invalid_referer

valid_referers 指令详解

该指令后面可以接 none blocked serevr_names string或者是正则表达式

none 代表没有referer

blocked 代表有referer但是被防火墙或者是代理给去除了

string或者正在表达式 用来匹配referer

nginx会通过查看referer字段和valid_referers后面的referer列表进行匹配,如果匹配到了就invalid_referer字段值为0 否则设置该值为1

现我为公司写出了实现这一功能的代码

 

  1. valid_referers none blocked server_names;
  2. if ($invalid_referer) {
  3.  rewrite ^/ http://********.com/ redirect;
  4. }

这里我讲解下

1.首先当我输入我要打开的网址的时候,因为是直接输入的没有referer所以匹配了

valid_referers后面的none或者是blocked 所以invalid_referer值为0 所以不进行跳转.

当我是从这个网站里面的链接跳到该网站首页的时候 因为referer的值是肯定包含srever_names 所以匹配了server_names所以不进行跳转.

2.当我从搜素引擎进去的时候因为referer字段类似于www.google.com.hk/search

开始进行匹配 发现没有一个匹配,则此时会设置invalid_referer值为1 if语句成功执行,进行了跳转. 达到功能

 

解释当我们访问以结尾的文件时,xxxx.

但是也有伪造referer,可以用加密签名解决。

使用第三方模块HttpAccessKeyModule实现Nginx防盗链。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值