国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison php教程 PHP開發(fā) Résumé des méthodes PHP pour prévenir le vol d'images (hotlinking)

Résumé des méthodes PHP pour prévenir le vol d'images (hotlinking)

Dec 23, 2016 pm 03:45 PM

本文實(shí)例總結(jié)了PHP防止圖片盜用(盜鏈)的方法。分享給大家供大家參考,具體如下:

圖片防盜鏈有什么用? 防止其它網(wǎng)站盜用你的圖片,浪費(fèi)你寶貴的流量。本文章向大家介紹php防止圖片盜用/盜鏈的兩種方法

一、Apache圖片重定向方法

設(shè)置images目錄不充許http訪問

Apache服務(wù)器下防止圖片盜鏈的辦法

如果你的網(wǎng)站以圖片為主,哪天發(fā)現(xiàn)月底沒到流量就快用光了,那就可以利用圖片轉(zhuǎn)向,在不修改網(wǎng)頁的前提下,把圖片下載請(qǐng)求轉(zhuǎn)向到其它空間(比如試用主機(jī)),臨時(shí)過渡。

下面開始講解,比如你的圖片都在img目錄下,那就在該目錄下放一個(gè)名為 .htaccess 的文件,內(nèi)容如下:

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 ^(.*)$ http://image.simcole.cn/image/$1 [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]

這部分是判斷是否盜鏈,如果以上條件都成立(即訪問圖片的請(qǐng)求,既不是直接輸入網(wǎng)址,也不是來自simcole.cn,也不是來自zhuaxia.com,也不是來自google.com,也不是來自baidu.com,也不是來自bloglines.com 的話),就執(zhí)行下列轉(zhuǎn)向:

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

意思是讓所有盜鏈 img 目錄下 jpg、gif、png、bmp、swf、jpeg 文件的網(wǎng)頁,顯示的圖片都用 image 目錄下的 replace.gif 圖片替換掉。注意替換顯示的圖片不要放在設(shè)置防盜鏈的 img 目錄下。如果照上面的規(guī)則判斷出圖片請(qǐng)求不是盜鏈的,就執(zhí)行以下轉(zhuǎn)向:

RewriteRule ^(.*)$ http://image.simcole.cn/image/$1 [L]

意思是對(duì) img 目錄下所有的請(qǐng)求都轉(zhuǎn)向到目標(biāo)服務(wù)器,比如有個(gè)圖片原來的 url 是 http://www.bebecn.com/img/girl.jpg ,現(xiàn)在就會(huì)轉(zhuǎn)到 http://image.bebecn.com/image/girl.jpg 去。當(dāng)然了你得先把原服務(wù)器 img 目錄下的文件統(tǒng)統(tǒng)拷貝到臨時(shí)服務(wù)器的 image 目錄下,轉(zhuǎn)向才會(huì)真正可用。起到的效果就是把原服務(wù)器圖片下載所占用的流量統(tǒng)統(tǒng)省下,讓臨時(shí)服務(wù)器來承受了.

設(shè)置images目錄不充許http訪問

把images目錄設(shè)置成不充許http訪問(把圖片目錄的:讀取、目錄瀏覽 兩個(gè)權(quán)限去掉)。

用一個(gè)PHP文件,直接用file函數(shù)讀取這個(gè)圖片。在這個(gè)PHP文件里進(jìn)行權(quán)限控制。

apache環(huán)境中,在你的圖片目錄中加上下面這個(gè)文件即可。

文件名 .htaccess

文件內(nèi)容如下

# options the .htaccess files in directories can override.
# Edit apache/conf/httpd.conf to AllowOverride in .htaccess
# AllowOverride AuthConfig
# Stop the directory list from being shown
Options -Indexes
# Controls who can get stuff from this server.
Order Deny,Allow
Deny from all
Allow from localhost

其他web環(huán)境如iss,nginx也類似。

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"); //圖片路徑,一般存儲(chǔ)在數(shù)據(jù)庫里,用戶無法獲取真實(shí)路徑,可根據(jù)圖片ID來獲取
$n -> img2data();
$n -> data2img();

這段代碼是讀取圖片,然后直接輸出給瀏覽器,在讀取和輸出之前,進(jìn)行用戶權(quán)限判斷。

這里說的PHP讀取圖片,不是指讀取路徑,而是指讀取圖片的內(nèi)容,然后通過Header();輸入圖片類型,比如 gif png jpg等,下面輸出圖片的內(nèi)容,所以用到了fread()

實(shí)際上,你看到 image.php?id=100 就是顯示這張圖片在瀏覽器上,而你查看源文件,看到的不會(huì)是圖片的路徑,而是亂碼似的圖片內(nèi)容。

類似于qq空間的加密相冊(cè),只有輸入密碼才能訪問,并且直接在瀏覽器輸入 加密相冊(cè)中的相片地址也是無法訪問。我目前的想法是 圖片的地址是一個(gè)php文件,通過 php 驗(yàn)證權(quán)限 ,讀取圖片,并輸出,不知道除了這樣的方法還有更簡(jiǎn)單高效的做法沒有?比如生成臨時(shí)的瀏覽地址,使用一些 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是彈出框(輸入用戶名和密碼)的標(biāo)題
auth_basic_user_file /usr/local/nginx/conf/htpasswd; 中的/usr/local/nginx/conf/htpasswd是保存密碼的文件

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

更多PHP防止圖片盜用(盜鏈)的方法小結(jié)相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276