国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > Apache > 正文

網(wǎng)站圖像防盜----Apache配置妙法

2024-08-27 18:29:06
字體:
供稿:網(wǎng)友
每個網(wǎng)站所有者都在盡力美化自己的網(wǎng)站,使它看上去更酷、更具有吸引力,其中最常見的方法就是使用圖片、logo及flash等。但是,這也會帶來一個問題,因為越漂亮、越吸引人的網(wǎng)站,漂亮的圖片和flash等就容易被別的網(wǎng)站悄悄的盜用。下面我們就一起討論如何防止網(wǎng)站圖像被盜用。

    需要解決的問題

    簡單的說,這里有兩種不同的盜用行為:
    1. 使用html標(biāo)記img在自己的網(wǎng)站中引用網(wǎng)站的圖片。
    2. 從網(wǎng)站上下載圖片,然后放在自己的網(wǎng)站上。

    對于第一種的盜用行為,合法網(wǎng)站的圖片被用來美化裝飾其它網(wǎng)站,這種盜用對合法網(wǎng)站的損害比較大,因為訪問非法網(wǎng)站的訪問者其實是從合法網(wǎng)站獲取圖片的,合法網(wǎng)站的日志文件充滿了訪問請求記錄,并且?guī)挶环欠ㄔL問消耗,而合法網(wǎng)站卻沒有得到任何好處。這種類型的盜用通過技術(shù)手段完全可以被防止。

    第二種類型的盜用相對來說比較陰險,瀏覽者在非法網(wǎng)站直接訪問非法的圖片,而合法網(wǎng)站的版權(quán)受到侵害,卻得不到賠償,甚至無法發(fā)現(xiàn)這種盜用。因為web的工作方式對這種類型的盜用實際上無法被阻止,但是可以使得這種盜用更加困難。

    完全杜絕這兩種盜用行為是不現(xiàn)實的,但是通過技術(shù)手段可以使得這種盜用非常困難。在apache環(huán)境下,通過配置可以限制網(wǎng)站圖片被盜用。

    標(biāo)識需要保護(hù)的文件

    作為網(wǎng)站管理員,最大的希望就是能夠保護(hù)網(wǎng)站上所有文檔,但是從技術(shù)角度考慮這種想法是不現(xiàn)實的,因此我們這里只討論對圖片文件的保護(hù)。

    作為保護(hù)的第一步,首先需要標(biāo)識出需要保護(hù)的文件,然后才能進(jìn)一步對被標(biāo)識的文件進(jìn)行保護(hù)。在apache配置文件中添加如下內(nèi)容:

<filesmatch "/.(gif|jpg)"> [這里添加保護(hù)限制命令]</filesmatch>


    將容器命令包含在等容器中,或者單獨列出,不處于任何保護(hù)容器中,這樣就會對網(wǎng)站所有文件進(jìn)行保護(hù),甚至可以存放在.htaccess文件。將該容器放在不同的位置,保護(hù)的范圍機會有所不同。

    referer http頭字段

    當(dāng)用戶訪問web服務(wù)器請求一個頁面時,用戶瀏覽器發(fā)送的http請求中會有一個被稱為http請求頭(http request header)的信息,這個頭信息中包含客戶請求的一些信息,例如發(fā)出請求客戶主機的瀏覽器版本、用戶語言、用戶操作系統(tǒng)平臺、用戶請求的文檔名等,這些信息以變量名/變量值的方式被傳輸。

    在這些信息中,referer字段對于實現(xiàn)防止圖片盜用非常重要。referer字段指定客戶端最后一個頁面的url地址。例如,如果用戶訪問頁面a,然后點擊在頁面a上到頁面b的鏈接,訪問頁面b的http請求會包括一個referer字段,該字段會包括這樣的信息“這個請求是來自于頁面a”。如果一個請求不是來自于某個頁面,而是用戶通過直接在瀏覽器地址欄輸入頁面a的url地址的方式來訪問頁面a,那么在http請求中則不會包括referer字段。這樣對于我們防止盜鏈有什么幫助呢?referer字段是幫助判斷對圖像的請求是來自自己的頁面,還是來自其它網(wǎng)站。

    使用setenvif對圖像進(jìn)行標(biāo)記

    作為一個簡單的例子,假設(shè)需要保護(hù)的網(wǎng)站的主頁面為http://my.apache.org,這時候希望限制所有不是源于本網(wǎng)站的網(wǎng)絡(luò)訪問請求(例如只允許訪問包含在本網(wǎng)站頁面內(nèi)的圖片)。這里可以使用一個環(huán)境變量作為一個標(biāo)記,如果條件滿足時就設(shè)置該變量,如下所示:
    setenvifnocase referer "^http://my/.apache/.org/" local_ref=1

    當(dāng)apache處理一個請求時,它會檢查http請求頭中的referer字段,如果該請求來源于本網(wǎng)站(也就是請求頁面的url為本網(wǎng)站域名),則設(shè)置環(huán)境變量local_ref為1。

    在雙引號中的字符串是一個正則表達(dá)式,只有匹配該正則表達(dá)式,環(huán)境變量才會被設(shè)置。本文不討論如何使用正則表達(dá)式,這里只需要理解setenvif*命令會使用正則表達(dá)式作為參數(shù)。

    setenvifnocase命令的“nocase”部分表示這里的正則表達(dá)式忽略大小寫,'http://my.apache.org/'、'http://my.apache.org/'或 'http://my.apache.org/'都可以匹配條件。

    在訪問控制中使用環(huán)境變量

    apache配置文件中的order、allow和deny命令可以實現(xiàn)對文檔的基于環(huán)境變量的訪問控制,使用order、allow和deny命令首先要考慮的是allow和deny命令的順序?qū)τ赼pache處理結(jié)果的影響,應(yīng)該以下面的方式使用:
    order allow,deny

    這里表示apache首先處理該http請求相關(guān)的allow命令,然后處理相關(guān)的deny命令。這種處理方式的默認(rèn)策略是deny,所以除非有明確的允許的設(shè)置,否則該請求就會被拒絕,任何非法訪問將無法成功。

    因此,在apache的配置文件httpd.conf中添加如下命令,來實現(xiàn)本地引用發(fā)揮作用:

order allow,denyallow from env=local_ref


    這樣只有在local_ref變量被定義的情況下,該請求才會被允許;否則其它所有請求和訪問將會被拒絕,因為這些請求不滿足allow條件。

    注意,請不要在.htaccess和httpd.conf中使用容器命令,這里不需要該容器命令,除非有特殊的需求,例如希望get請求和post請求進(jìn)行不同的處理。

    把這些相關(guān)設(shè)置放在一起,在apache的配置文件中就會有如下內(nèi)容:

setenvifnocase referer "^http://my/.apache/.org/" local_ref=1<filesmatch "/.(gif|jpg)">  order allow,deny  allow from env=local_ref</filesmatch>


    如上配置可以存放在服務(wù)器配置文件httpd.conf中,或者存放在.htaccess文件中,最后的效果是一樣的:在這些命令作用的范圍內(nèi),只有從本網(wǎng)站引用的圖片才可以被訪問。

    對圖片進(jìn)行水印處理

    上面介紹的方法并不能完全防止圖像盜鏈,這是因為有些執(zhí)著的盜用者可以偽造referer值來盜用圖片,使相關(guān)設(shè)置失效,所以不可能完全防止網(wǎng)站圖片被盜鏈,但是上面采取的措施會使得盜鏈變得很困難。

    此外,還有一個防止圖片被盜用的方法,就是對網(wǎng)站的圖片都進(jìn)行水印處理。對一個數(shù)字圖片進(jìn)行水印處理是指在圖片中加入一個特殊的簽名編碼,并且可以進(jìn)行驗證和檢測,數(shù)字水印并不會降低圖片的質(zhì)量,甚至可以實現(xiàn)圖像被切割以后的剩余部分仍然會包括水印信息。圖片被再次編輯、打印,并再次掃描以后,水印仍然可以被檢測到。因此,水印技術(shù)是一個非常好的保護(hù)圖片不被盜用的技術(shù)。

    記錄盜用請求

    如果想知道自己網(wǎng)站的藝術(shù)品是否被盜,可以嘗試使用同樣的偵測和環(huán)境變量來記錄可疑請求。例如,在httpd.conf文件中添加如下命令,那么會在/usr/local/web/apache/logs/poachers_log文件中記錄所有具有非法的referer頭信息的訪問請求:

setenvifnocase referer      "!^http://my/.apache/.org/" not_local_ref=1setenvifnocase request_uri  "/.(gif|jpg)"               is_image=1rewriteengine  onrewritecond    ${env:not_local_ref} =1rewritecond    ${env:is_image}      =1rewriterule    .*                   -     [last,env=poach_attempt:1]customlog logs/poachers_log         clf   env=poach_attempt



    在上面代碼中,頭兩行為條件設(shè)置標(biāo)記(也就是沒有正確的本地referer的圖片文件),rewritecond檢測是否該標(biāo)記被設(shè)置,然后rewriterule設(shè)置第三個標(biāo)記,最后一行使得這樣的訪問請求被記錄在特定的文件中。

    上面簡單介紹了在apache環(huán)境下,如何通過配置來限制網(wǎng)站圖片被盜用的方法,拋磚引玉,希望大家將自己更好的經(jīng)驗介紹出來。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 腾冲县| 延寿县| 巴塘县| 邢台市| 清河县| 永善县| 章丘市| 册亨县| 土默特右旗| 台东县| 卢龙县| 瓦房店市| 广水市| 绥中县| 津市市| 贵州省| 湖北省| 日喀则市| 报价| 元阳县| 深圳市| 承德县| 华亭县| 罗田县| 蓝田县| 阿勒泰市| 朝阳区| 巴南区| 启东市| 阿勒泰市| 博客| 遂昌县| 成武县| 汤阴县| 涪陵区| 根河市| 渝中区| 万安县| 安仁县| 西平县| 屯昌县|