php盗链
A. php怎么防止图片盗链
原理上和防止盗链文件是一样的。
盗链文件怎么做,盗链图片就怎么做,只不过返回的不是文件,而是图片流,如果发现盗链就返回另一个图片流
B. 如何实现网站的防盗链
可以基于OSS的防盗链,目前OSS提供的防盗链的方法主要有两种:
设置Referer。控制台,SDK都可以操作,适合不想写代码的用户,也适合喜欢开发的用户;
签名URL,适合喜欢开发的用户。 本文会给一个控制台设置Referer防盗链的具体事例,也会基于PHP SDK给一个动态生成签名URL防盗链的示例。
- 第五步:单击“提交”保存对防盗链的设置。
- <?phprequire 'vendor/autoload.php';#最新PHP提供的自动加载use OSSOssClient;#表示命名空间的使用$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,例如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访问日志,能够及时发现盗链活动和验证防盗链方案的有效性。 访问日志参见设置访问日志记录。
通过Referer防盗链的具体步骤
第一步:进入 OSS 管理控制台界面。
第二步:单击目标存储空间的名称进入存储空间管理页面。
第三步:单击 Bucket 属性 > 防盗链设置。

举例
对于一个名为test-1-001的存储空间,设置其referer 白名单为 http://www.aliyun.com。则只有 referer 为http://www.aliyun.com的请求才能访问oss-example这个存储空间中的对象。
签名URL实现步骤
签名URL的原理和实现方法见OSS开发人员指南授权第三方下载。 签名URL的实现步骤:
1、将Bucket的权限设置为私有读;
2、 根据期望的超时时间(签名URL失效的时间)生成签名。
具体实现
第一步:安装PHP最新代码,参考PHP SDK文档;
第二步:实现生成签名URL并将其放在网页中,作为外链使用的简单示例:
第三步:通过浏览器访问 多请求几次会发现签名的URL会变,这是正常的。主要是因为过期时间的改变导致的。这个过期时间是链接失效的时间,是以unix time的形式展示的。 如:Expires=189999,可以将这个时间转换成本地时间。在Linux下的命令为date -d@189999,也可以在网络上找工具自行转换。
特别说明
签名URL可以和Referer白名单功能一起使用。
如果签名URL失效的时间限制在分钟内,盗链用户即使伪造了Referer也必须拿到签名的URL,且必须在有效的时间内才能盗链成功。 相比只使用Referer来说,增加了盗链的难度。 也就是说签名URL配合Referer白名单功能,可以增加防盗链的效果。
防盗链总结,基于OSS的防盗链最佳实践点如下:
C. 使用PHP脚本怎么防止盗链都有什么好的方法
只通过 php 手段防盗链的手段比较单一。盗链的特点是来源URL的域名不是当前站点的域名。所以判断的方式只有判断 $_SERVER['HTTP_REFERER'] 服务器变量中的来源 URL 域名是否和本站域名相同。
但这种方式只能防君子不防小人,伪造来源太容易了。而且,通常盗链的只会是你 php 跳转的静态资源文件路径,就可以跳过你 php 的判断了。如果你下载的文件通常都不大,那可以用 php 输出这个文件下载,不提供你的静态文件路径下载。因为这种方式比较占用 php 资源,只适用于小型文件。
D. PHP判断来源和防止盗链问题
<?php
//a.php
define('refererCheck','ok');
if(stripos($_SERVER['REQUEST_URI'],'/a.php')!==false&&$_GET['id']){
include_once('/'.$_GET['id'].'.php');
}else{
//此处为了防止其他包含a.php的文件通过a.php读取1~4.php,如果没有其他文件包含a.php,则if和else可以不用,define后直接include_once
die('请勿盗链');//如果出现乱码,根据你的文档字符加header编码
}
?>
<?php
if(defined('refererCheck')){
//此处为正常访问内容
}else{
die('请勿盗链');
}
?>
以上为1~4.php的写法
E. php图片防盗链 怎么破解
这种一般是通过Refer来防盗链的,一般只能下载图片部署到自己服务器上。
F. PHP如何实现防盗链详解
本文实例讲述了php简单防盗链实现方法。分享给大家供大家参考。具体如下:
<?php $ADMIN = array( 'defaulturl'=> 'http://blog.qita.in/images/banner-header.gif', //盗链返回的地址 'url_1' => 'http://blog.qita.in/file', 'url_2' => 'http://blog.qita.in/file1', ); $okaysites = array( 'http://qita.in', 'http://blog.qita.in', //白名单 'http://blog.qita.in/1.html', ); $reffer = $_SERVER['HTTP_REFERER']; if ($reffer) { $yes = 0; while (list($domain, $subarray) = each($okaysites)) { if (ereg($subarray, "$reffer")) { $yes = 1; } } $theu = 'url_' . $_GET['site']; $file = $_GET['file']; if ($ADMIN[$theu] and $yes == 1) { header("Location: $ADMIN[$theu]/$file"); } else { header("Location: $ADMIN[defaulturl]"); } } else { header("Location: $ADMIN[defaulturl]"); } print_r($_SERVER['HTTP_REFERER']); ?>
G. thinkphp5.0怎么防止网站盗链
简单几行PHP实现防盗链
<?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:kyxpassword:123456";
}elseheader("Location:warning.php");//跳转页面到warning.php
}elseheader("Location:warning.php");
?>
H. 怎样用PHP实现网站防盗链
防盗链系统就是防范盗链的系统,防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站资源展示页面的资源链接失效。实施防盗链系统后,因为屏蔽了那些盗链的间接资源请求,从而可以大大减轻服务器及带宽的压力,也正如此,越来越多的站点都开始实施防盗链技术。常见的防盗链系统,一般使用在图片、音视频、软件等相关的资源上。下图便是网易博客的防盗链效果。
I. PHP文件防盗链了,怎么破解呢
用CURL摸拟请求
$url="目标地址";
//.
functiondisguise_curl($url)
{
$curl=curl_init();
//Setupheaders-.0.0.6
//belowwassplitupbecausephp.netsaidthelinewastoolong.:/
$header[0]="Accept:text/xml,application/xml,application/xhtml+xml,";
$header[0].="text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
$header[]="Cache-Control:max-age=0";
$header[]="Connection:keep-alive";
$header[]="Keep-Alive:300";
$header[]="Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
$header[]="Accept-Language:en-us,en;q=0.5";
$header[]="Pragma:";//browserskeepthisblank.
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_USERAGENT,'Googlebot/2.1');
curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
curl_setopt($curl,CURLOPT_REFERER,'www.google.com');
curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate');
curl_setopt($curl,CURLOPT_AUTOREFERER,true);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_TIMEOUT,10);
$html=curl_exec($curl);//executethecurlcommand
curl_close($curl);//closetheconnection
return$html;//andfinally,return$html
}
//
$text=disguise_curl($url);
echo$text;
CURLOPT_REFERER这个的值设置成目标网站的域一般都能过。
J. 如何用PHP盗链一个图片地址
<?php
header("Content-type: image/jpeg");
echo file_get_contents("http://aaa.com/".$_GET['url']);
?>
记住头尾要干净,要以“<?php”开头不要有BOM,要以“?>”结尾不要有回车
那个类型的header只是提示浏览器,这是个图。至于真正是JPG还是PNG,浏览器会自动识别的。
但是,别人可以防盗链的。当然,你也可以真正模仿浏览器访问,那个就稍微复杂点,用CURL,学了没太大用处的。