好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>CMS系统>Dedecms
<tfoot draggable='sEl'></tfoot>

php防止盗链 php防盗链代码

很多站长朋友们都不太清楚php防止盗链,今天小编就来给大家整理php防止盗链,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php怎么通过refer来禁止外部盗链 2、 PHP防止图片盗用(盗链)的方法小结 3、 有谁知道PHP5.3怎么弄文字盗链 4、 thinkphp5.0怎么防止网站盗链 5、 如何实现网站的防盗链? 6、 php怎么防止图片盗链 php怎么通过refer来禁止外部盗链

应该是reffer,判断reffer是否为本站,如果是,则说明来源本站,可以提供图片,反之,就拒绝

当然,reffer可以伪造,有的时候reffer丢失等会导致判断出错~,所以,并不是一个完美的解决方案

PHP防止图片盗用(盗链)的方法小结

文章主要介绍了PHP防止图片盗用(盗链)的方法,结合实例形式分析了php通过修改Apache服务器配置及目录访问权限等方式实现图片防盗链的相关操作技巧,需要的朋友可以参考下.

本文实例总结了PHP防止图片盗用(盗链)的方法。分享给大家供大家参考,具体如下:

图片防盗链有什么用? 防止其它网站盗用你的图片,浪费你宝贵的流量。本文章向大家介绍php防止图片盗用/盗链的两种方法

一、Apache图片重定向方法

设置images目录不充许http访问

Apache服务器下防止图片盗链的办法

如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在不修改网页的前提下,把图片下载请求转向到其它空间(比如试用主机),临时过渡。

下面开始讲解,比如你的图片都在img目录下,那就在该目录下放一个名为 .htaccess 的文件,内容如下:

RewriteEngine on

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !simcole.cn [NC]

RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]

RewriteCond %{HTTP_REFERER} !google.com [NC]

RewriteCond %{HTTP_REFERER} !baidu.com [NC]

RewriteCond %{HTTP_REFERER} !bloglines.com [NC]

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

RewriteRule ^(.*)$ [L]

大概解释下:

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !simcole.cn [NC]

RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]

RewriteCond %{HTTP_REFERER} !google.com [NC]

RewriteCond %{HTTP_REFERER} !baidu.com [NC]

RewriteCond %{HTTP_REFERER} !bloglines.com [NC]

这部分是判断是否盗链,如果以上条件都成立(即访问图片的请求,既不是直接输入网址,也不是来自simcole.cn,也不是来自zhuaxia.com,也不是来自google.com,也不是来自baidu.com,也不是来自bloglines.com 的`话),就执行下列转向:

?

1

RewriteRule .(jpg|gif|png|bmp|swf|jpeg) /image/replace.gif [R,NC,L]

意思是让所有盗链 img 目录下 jpg、gif、png、bmp、swf、jpeg 文件的网页,显示的图片都用 image 目录下的 replace.gif 图片替换掉。注意替换显示的图片不要放在设置防盗链的 img 目录下。如果照上面的规则判断出图片请求不是盗链的,就执行以下转向:

?

1

RewriteRule ^(.*)$ [L]

意思是对 img 目录下所有的请求都转向到目标服务器,比如有个图片原来的 url 是 ,现在就会转到 去。当然了你得先把原服务器 img 目录下的文件统统拷贝到临时服务器的 image 目录下,转向才会真正可用。起到的效果就是把原服务器图片下载所占用的流量统统省下,让临时服务器来承受了.

设置images目录不充许http访问

把images目录设置成不充许http访问(把图片目录的:读取、目录浏览 两个权限去掉)。

用一个PHP文件,直接用file函数读取这个图片。在这个PHP文件里进行权限控制。

apache环境中,在你的图片目录中加上下面这个文件即可。

文件名 .htaccess

文件内容如下

class imgdata{

public $imgsrc;

public $imgdata;

public $imgform;

public function getdir($source){

$this->imgsrc = $source;

}

public function img2data(){

$this->_imgfrom($this->imgsrc);

return $this->imgdata=fread(fopen($this->imgsrc,'rb'),filesize($this->imgsrc));

}

public function data2img(){

header("content-type:$this->imgform");

echo $this->imgdata;

//echo $this->imgform;

//imagecreatefromstring($this->imgdata);

}

public function _imgfrom($imgsrc){

$info=getimagesize($imgsrc);

//var_dump($info);

return $this->imgform = $info['mime'];

}

}

$n = new imgdata;

$n -> getdir("1.jpg"); //图片路径,一般存储在数据库里,用户无法获取真实路径,可根据图片ID来获取

$n -> img2data();

$n -> data2img();

这段代码是读取图片,然后直接输出给浏览器,在读取和输出之前,进行用户权限判断。

这里说的PHP读取图片,不是指读取路径,而是指读取图片的内容,然后通过Header();输入图片类型,比如 gif png jpg等,下面输出图片的内容,所以用到了fread()

实际上,你看到 image.php?id=100 就是显示这张图片在浏览器上,而你查看源文件,看到的不会是图片的路径,而是乱码似的图片内容。

类似于qq空间的加密相册,只有输入密码才能访问,并且直接在浏览器输入 加密相册中的相片地址也是无法访问。我目前的想法是 图片的地址是一个php文件,通过 php 验证权限 ,读取图片,并输出,不知道除了这样的方法还有更简单高效的做法没有?比如生成临时的浏览地址,使用一些 nginx 的一些防盗链插件?

你可以利用ngx_http_auth_basic_module来完成。

修改配置文件

location / {

root /usr/local/nginx/html;

auth_basic "Auth";

auth_basic_user_file /usr/local/nginx/conf/htpasswd;

index index.php index.htm;

}

auth_basic "Auth"中的Auth是弹出框(输入用户名和密码)的标题

auth_basic_user_file /usr/local/nginx/conf/htpasswd; 中的/usr/local/nginx/conf/htpasswd是保存密码的文件

有谁知道PHP5.3怎么弄文字盗链

1.简单防盗链

$ADMIN[defaulturl] = "";//盗链返回的地址

$okaysites = array("",""); //白名单

$ADMIN[url_1] = "";//下载地点1

$ADMIN[url_2] = "";//下载地点2,以此类推

$reffer = $HTTP_REFERER;

if($reffer) {

$yes = 0;

while(list($domain, $subarray) = each($okaysites)) {

if (ereg($subarray,"$reffer")) {

$yes = 1;

}

}

$theu = "url"."_"."$site";

if ($ADMIN[$theu] AND $yes == 1) {

header("Location: $ADMIN[$theu]/$file");

} else {

header("Location: $ADMIN[defaulturl]");

}

} else {

header("Location: $ADMIN[defaulturl]");

}

?>

使用方法:将上述代码保存为dao4.php,

比如我测试用的validatecode.rar在我的站点里面,

则用以下代码表示下载连接.

CODE: [Copy to clipboard]

文件名?site=1file=文件

2.服务器防盗链

用到软件 IIS防盗链插件(UUIIS防盗链) 高级免费版

下在地址

2、用请求报文头来判定

请求报文头中通常带有请求页面的URL,看看这个URL是否属于自己域名就可以了

thinkphp5.0怎么防止网站盗链

简单几行PHP实现防盗链

<?php

//获取referer 从a.html来的没有referer参数,而从b.html来的有referer参数

  if(isset($_SERVER['HTTP_REFERER']))

  {

      if(strpos($_SERVER['HTTP_REFERER'],"")==0)//判断$_SERVER['HTTP_REFERER']是不是以开始的

      {

       echo "username:kyx password:123456";

      } else  header("Location:warning.php");//跳转页面到warning.php

   } else header("Location:warning.php");

  

?>

如何实现网站的防盗链?

可以基于OSS的防盗链,目前OSS提供的防盗链的方法主要有两种:

设置Referer。控制台,SDK都可以操作,适合不想写代码的用户,也适合喜欢开发的用户;

签名URL,适合喜欢开发的用户。 本文会给一个控制台设置Referer防盗链的具体事例,也会基于PHP SDK给一个动态生成签名URL防盗链的示例。

通过Referer防盗链的具体步骤

第一步:进入 OSS 管理控制台界面。

第二步:单击目标存储空间的名称进入存储空间管理页面。

第三步:单击 Bucket 属性 > 防盗链设置。

第四步:单击“设置”添加白名单网址并设置是否允许其为空。

请点击输入图片描述

第五步:单击“提交”保存对防盗链的设置。

举例

对于一个名为test-1-001的存储空间,设置其referer 白名单为 。则只有 referer 为的请求才能访问oss-example这个存储空间中的对象。

签名URL实现步骤

签名URL的原理和实现方法见OSS开发人员指南授权第三方下载。 签名URL的实现步骤:

1、将Bucket的权限设置为私有读;

2、 根据期望的超时时间(签名URL失效的时间)生成签名。

具体实现

第一步:安装PHP最新代码,参考PHP SDK文档;

第二步:实现生成签名URL并将其放在网页中,作为外链使用的简单示例:

<?phprequire 'vendor/autoload.php';#最新PHP提供的自动加载use OSS\OssClient;#表示命名空间的使用$accessKeyId="a5etodit71tlznjt3pdx7lch";#AccessKeyId,需要使用用户自己的$accessKeySecret="secret_key";#AccessKeySecret,需要用用户自己的$endpoint="oss-cn-hangzhou.aliyuncs.com";#Endpoint,根据Bucket创建的区域来选择,本文中是杭州$bucket = 'referer-test';#Bucket,需要用用户自己的$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);$object = "aliyun-logo.png";#需要签名的Object$timeout = 300;#期望链接失效的时间,这里表示从代码运行到这一行开始的当前时间往后300秒$signedUrl = $ossClient->signUrl($bucket, $object, $timeout); #签名URL实现的函数$img= $signedUrl;#将签名URL动态放到图片资源中并打印出来$my_html = "<html>";$my_html .= "<img src=\"".$img. "\" />";$my_html .= "<p>".$img."</p>";$my_html .= "</html>";echo $my_html;?>

第三步:通过浏览器访问 多请求几次会发现签名的URL会变,这是正常的。主要是因为过期时间的改变导致的。这个过期时间是链接失效的时间,是以unix time的形式展示的。 如:Expires=189999,可以将这个时间转换成本地时间。在Linux下的命令为date -d@189999,也可以在网络上找工具自行转换。

特别说明

签名URL可以和Referer白名单功能一起使用。

如果签名URL失效的时间限制在分钟内,盗链用户即使伪造了Referer也必须拿到签名的URL,且必须在有效的时间内才能盗链成功。 相比只使用Referer来说,增加了盗链的难度。 也就是说签名URL配合Referer白名单功能,可以增加防盗链的效果。

防盗链总结,基于OSS的防盗链最佳实践点如下:

使用三级域名URL,例如referer-test.oss-cn-hangzhou.aliyuncs.com/aliyun-logo.png,安全性比绑定二级域名更高。三级域名方式能够提供Bucket级别的清洗和隔离,能够应对被盗链后的流量暴涨的情况,也能避免不同Bucket间的互相影响,最终提高业务可用性;

如果使用自定义域名作为连接,CNAME也请绑定到三级域名,规则是bucket + endpoint。假如你的bucket名为test,三级域名则为test.oss-cn-hangzhou.aliyuncs.com;

对Bucket设定尽可能严格的权限类别。例如提供公网服务的Bucket设置为public-read或private,禁止设置为public-read-write。Bucket权限参见访问控制;

对访问来源进行验证,根据需要设置合适的Referer白名单;

如果需要更严格的防盗链方案,请参考签名的URL方案;

记录Bucket访问日志,能够及时发现盗链活动和验证防盗链方案的有效性。 访问日志参见设置访问日志记录。

php怎么防止图片盗链

原理上和防止盗链文件是一样的。

盗链文件怎么做,盗链图片就怎么做,只不过返回的不是文件,而是图片流,如果发现盗链就返回另一个图片流

关于php防止盗链的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php防止盗链 php防盗链代码的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did169232
更新时间:2023-04-14   阅读:34次

上一篇: php任意字符串 php字符串型数据的定义方式

下一篇:禁止execphp 禁止标志

相关资讯

最新资料更新

  • 1.Dedecms自定义模型解决会员无法投稿的方法
  • 2.织梦做产品展示怎么去掉图片作为超链接时出现的框框
  • 3.DEDECMS批量导入excel数据到后台文章系统的开发教程
  • 4.DedeCms后台登录一片空白的解决方法
  • 5.织梦dede所有实用标签调用方法搜集整理
  • 6.DedeCMS新建模型字段中【附件样式】的修改方法
  • 7.DEDECMS 扩展标签和dede自定义标签实现方法
  • 8.织梦在导航栏下拉菜单中调用当前栏目子类的方法
  • 9.在织梦中添加腾讯微博最新动态信息的方法
  • 10.详细的DedeCMS(织梦)目录权限安全设置教程
  • 11.dedecms织梦验证码无法正常显示的3种解决办法
  • 12.dedecms前台会员无法上传图片类型的解决方法
  • 13.dedecms5.7文章二次开发实现阅读全文功能的方法
  • 14.dede:field name=position去除最后一个大于符号
  • 15.Dedecms中常用数据调用的sql语句汇总
  • 16.织梦dedecms登录管理后台总是验证码错误的解决方案
  • 17.解决织梦安装模板时提示不能安装的问题
  • 18.织梦DedeCMS文章标题自动增加长尾关键词的方法
  • 19.Dedecms获取登录用户名与ID号的方法
  • 20.dedecms各模板调用自定义字段的方法

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]