php - 如何防止網站圖片被瀏覽
黄舟
黄舟 2017-05-16 13:08:02
0
11
1306

做一個網站,上傳圖片到伺服器某個位置,然後透過連結可以直接存取這個圖片,就是說別人拿到這個連結就可以直接在瀏覽器輸入絕對路徑看到。怎麼樣可以防止呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(11)
伊谢尔伦

樓主可以試試下又拍雲的雲端存儲,有Token防盜鏈解決你說的問題。提供文章方便你了解Token防盜鏈。

文章推薦:Token 防盜鏈詳解

某草草

改造圖片伺服器,圖片資料夾不直接對外暴露。 在圖片伺服器上架設一個Http代理服務,訪問圖片的url中必須有一個合法的token參數才允許訪問,例如 http://www.imgserver.com/test.jpg?t=xT5112XabseFg0,

  • 其中t參數時你自己設定的加密演算法產生的,裡面含有這個參數的創建時間。

  • 伺服器接收到這個請求後,解密token,拿到裡面的時間戳,如果是10秒之內創建的(你可以設定你自己希望的有效期),就返回圖片訊息,否則拒絕訪問。

這樣一個圖片連結就有了有效期限概念,自己使用時載入有合法t參數的圖片就能正常展示給使用者。用戶此時自己拷貝這個圖片地址在瀏覽器直接訪問,很可能已經過了有效期,自然打不開了。

此外,還有更簡單的方法防盜鏈:(當然也可以和上面的方法結合用)

判斷http請求發過來的referer信息,如果不等於你自己的網站域名或者為空(即,該圖片請求不是在你的網站發起的),那麼不允許訪問。

習慣沉默

1.最愚蠢的方法就是對圖片檔案名稱進行加密,當係也防止不了link被盜用
2.使用base64方式載入圖片
3.在中間器設定方式伺服器以外存取

阿神

搜一下圖片防盜鏈吧,這方面要說的太多了。

黄舟

這種需求還是用圖片防盜鏈技術解決比較好。

曾经蜡笔没有小新

可以試試雲端平台的物件儲存功能,阿里雲和七牛都有,上傳和下載的權限是分開的,或者也有相對傳統的防盜鏈這樣的功能可以用。

我想大声告诉你

了解thinkphp5吧,他為什麼要把入口檔案放到public目錄下呢?

因為這樣可以保證你專案中的資源,例如圖片,不能直接被瀏覽器訪問到,只能透過單一的入口文件 index.php 訪問,這樣你的圖片或某些程式碼檔案就不能被直接存取到了!

你可以參考這個思路,設定存取權限,只能透過入口文件存取到圖片資源

为情所困

圖片上傳就是給人看的。估計你是想防盜連吧。開啟防盜連,通常判斷referer就能實一, 並選擇禁止空的referer就可以了。當然,要完全防人家盜。可以用不公開真實地址,或加上token等方法。

phpcn_u1582

如果你用的http伺服器是apache,那麼在圖片目錄下新建 .htaccess 寫入以下程式碼:

<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !abc.com [NC]
RewriteRule .*\.(jpg|png)$ http://localhost/ [R,NC,L]
</ifmodule>

原理是利用 apache 的 rewrite 功能,判斷 referer 是否是來自 abc.com,如果不是就跳到 localhost。
如果圖片是直接訪問是沒有 referer 的,如果是從其他網站引用則 referer 是其他網站的域名,都不允許訪問,可以達到保護圖片和節省流量的效果。

我想大声告诉你

我只想說,要不放到伺服器去!只要放上去,就能看!什麼鬼防盜鏈,防菜鳥還好!

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板