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,學了沒太大用處的。