我正在製作一個社交網站,人們可以發佈只有他們的朋友才能看到的照片。我將圖像存儲在名爲照片的文件夾中。我希望圖像只能通過html標籤查看img,所以如果有人直接在瀏覽器中輸入img url,我希望它返回403/404或其他。我怎麼能用htaccess完成這件事?使用htaccess的圖片隱私
回答
你不能做到這一點與htaccess的是恰當地指出了其他的答案,但是,您可以創建一個PHP腳本,控制誰可以訪問圖像,我們把它叫做imgsrc.php
$file = $_GET['file'];
if(user_allowed_access($file)){
$ext = substr($file, strrpos($file, '.') + 1);
header('Content-type: image/' . $ext);
readfile($file);
} else {
header('Content-type: image/png');
readfile('some/default/file.png');
}
然後你<img>
標籤已經SRC
<img src="/imgsrc.php?file=path/to/image.png" />
然後在你的.htaccess
的圖像目錄把
Order deny, allow
Deny from all
Allow from localhost
以上都未經過測試,但您應該明白
小心這個;取決於你的user_allowed_access函數,可能沒有任何東西阻止某人使用相對路徑讓你的服務器提供應該隱藏的東西: –
據我所知(有人請糾正我,如果你知道否則),這是不可能與htaccess,因爲它需要知道你是誰的朋友是讓他們看到圖像。
相反,你必須使用類似PHP的東西做一些cookie身份驗證,以找出請求者是誰,然後檢查他們的朋友/共同朋友等與圖像所有者,並且如果他們是這樣提供圖像允許看到它。雖然這是一個非常徵稅過程(它足夠硬服務靜態圖像,因爲它們!),所以一般的技術是使用長,尷尬的URL,所以他們不能被別人猜到並離開它(即允許什麼你試圖阻止)。
或者,再次使用PHP,檢查HTTP_REFERER標頭。如果從頁面內請求,它將被設置爲您的頁面URL。否則它將是空白或其他東西。這是不可靠的 - 但有些瀏覽器根本沒有發送它,反正它很容易被僞造。
或者,您可以強制執行一個時間窗口,在初始頁面加載的10秒內只能請求圖像。這對於連接速度慢的人來說是不好的。
基本上沒有什麼能夠阻止某人拍攝屏幕截圖或者在很多影像網站上流行拍攝,直接拍攝屏幕照片。
我只想要。htaccess使圖像只能通過img標籤可見而不是通過瀏覽器直接通過url – user2840510
不幸的是,這是不可能的,因爲htaccess無法區分img標籤和選項卡之間的區別 - 但是您可以查看Http Referer標頭,在img標籤中設置爲主頁面,在標籤頁中爲空白,但可能很容易被欺騙。 –
- 1. 圖片對象中的隱私設置,使用圖表API
- 2. Google Vision隱私權:圖片刪除
- 3. 檢查用戶的照片隱私
- 4. 使用.htaccess下載頁面/文件夾隱私?
- 5. IOS照片隱私和圖片上傳過程
- 6. htaccess的CSS圖片
- 7. 隱藏使用的.htaccess
- 8. 使用htaccess更改圖片源URL
- 9. 如何使用Request.newUploadPhotoRequest更改照片隱私上傳?
- 10. 用於私人照片的Android圖庫
- 11. 使用.htaccess隱藏擴展
- 12. 使用htaccess隱藏php GET
- 13. 與htaccess的(圖片)問題
- 14. 的.htaccess改變圖片src
- 15. 使用SLComposeViewController的隱私政策?
- 16. 使用Zend的隱私控制
- 17. 使用PHP/MySQL的隱私選項
- 18. 使用圖形API更改Facebook舊帖子的隱私
- 19. 用戶私人圖片庫管理
- 20. 使用.htaccess隱藏URL的一部分
- 21. 使用HTACCESS或PHP的域名隱藏
- 22. Facebook的圖形API:GET /無隱私「SELF」
- 23. 谷歌圖表的數據隱私
- 24. htaccess重寫圖片網址
- 25. .htaccess更改目錄圖片
- 26. 隱藏IvideoWindow圖片
- 27. 隱藏UIButton圖片
- 28. 在使用viewPager時隱藏視圖隱藏片段
- 29. SharpSNMP:使用SNMP v3進行AES隱私
- 30. 使用Facebook API設置隱私設置
搜索防止圖像盜鏈。不確定如何做到這一點,但會給你一些相關的答案。 – kais
您提出的方法不會完成任務。您需要在應用程序層處理這種訪問。否則,有人可以很容易地欺騙一個引用標題並撕掉所有的圖像。 – Brad
您無法可靠地分辨出作爲頁面加載的一部分發出GET請求的瀏覽器和將URL放入瀏覽器地址框中的人之間的區別。試圖通過.htaccess應用安全性可能會打敗你。您最好將圖像指向一個PHP腳本,該腳本可以在返回圖像之前檢查登錄狀態和訪問權限。 – 2013-10-12 23:58:19