簡體   English   中英

防止使用瀏覽器URL直接訪問圖像

[英]Prevent direct access to images using the browser url

我有一個名為-Images的文件夾。 此文件夾包含用戶個人資料圖片。 現在,用戶可以隨時通過將圖像URL復制到瀏覽器來查看其圖像。 這樣,他還可以查看其他用戶的個人資料照片。 我想要實現的是-用戶應該只能通過我網站上的PHP頁面看到其個人資料圖片。 如果用戶直接放置圖像URL,則不應顯示它。

我嘗試使用.htaccess實現此目的。 這是我在.htaccess文件中的內容:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/
RewriteRule \.(gif|jpg)$ http://www.mysite.com/errorpost.jpg [R,L]

我是.htaccess的新手。 如果有辦法實現這一目標,請幫忙。

提前致謝。

我也有同樣的問題。 目前,我發現了兩種方法:

1)base64_encode()+ ajax + js / jquery

  • 將base64_encode()編碼的每個圖像存儲在二進制文件或數據庫OUTSIDE www文件夾中。
  • 使用ajax獲取該數據。 它應該返回“ data:image / jpeg; base64,$ enc_imgbinary”
  • 使用js / jquery將'img'屬性的'src'替換為返回結果

優點

  • 無法通過直接鏈接訪問圖像

缺點

  • 我沒有找到類似的視頻解決方案。
  • 圖像應事先編碼(或首次使用),以最大程度地減少服務器CPU使用率。
  • 編碼的圖像占用磁盤大約30%以上的空間=> 1.3倍磁盤空間
  • 如果要將原始圖像保留在服務器上=> 2.3x磁盤空間。
  • 將通過網絡發送約30%的數據

2)長隨機名稱(+符號鏈接)

A)使用隨機名稱將圖像存儲在www文件夾中
B)將圖像存儲在帶有www文件夾符號鏈接的www文件夾之外。 (www之外的圖像也可以用作您的桌面圖像備份)

筆記:

  • 文件夾還必須包含隨機符號
  • 采用 '。' 在任何文件夾或文件名之前=>以防萬一,以防止在未配置的apache上顯示文件夾內容
  • 配置apache以在情況B中遵循符號鏈接)(將FlowSymlinks添加到httpd.conf)
  • 配置apache以防止列出文件夾內容(從httpd.conf刪除索引)
  • 圖像層次結構示例:

    • 萬維網
      • .media_jmdue7jed
        • .user1_hash_!sdfsewewfsdfsds
          • .album1_name_!jfie8e7y77667fef
            • .photo1_name_!kjio9i890v8fsd978fyreshf
            • .photo2_name_!09098dfuujdsif87s7ysdffd
            • ...
          • .album2_name_!ghhyuflp!huidfjh
            • .photo1_name_!feojihudhufuuhfrufhi8484
            • .photo2_name_!2344gfdgfdgdfefedw232sdg
            • ...
        • .user1_hash_!j333re89dsfdsf
          • ...

優點:

  • 也可以用於視頻
  • 通過使用長隨機名稱創建指向www文件夾的符號鏈接,您仍然可以將具有原始名稱的原始圖像保留在www文件夾之外。 每個用戶甚至都不同。
  • 圖片可以在服務器外部使用(在論壇中,可以將直接鏈接直接發送給您的朋友或類似人)

缺點

  • 必須預先創建符號鏈接(或動態創建)
  • 可以通過直接鏈接訪問圖像
    • 但是幾乎不可能猜到它
    • 您也可以定期更改符號鏈接隨機名稱或更改圖像版權(我要求google +這樣做)
  • 映射原始名稱→長隨機名稱應存儲在db(或邊卡/元文件)中
    • (如果通過編碼/解碼或通過組合原始名稱+長隨機名稱來將原始名稱保留在長隨機名稱內,則可以繞過該路徑)

====================================

我已經實現了案例1),對我來說很好用,但是我沒有找到類似的HTML5視頻解決方案。

情況2)似乎更靈活。 但是我仍然不確定安全性。 如果有人看到安全漏洞,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM