我正在用PHP寫一個web應用程序,用戶可以上傳他們自己的文件或圖像,但是如何保護這些文件不被所有者以外的人訪問。想想dropbox,保護這些文件的機制是什麼,我試圖搜索,但沒有得到任何有關這方面的信息。任何指針或任何指向教程的鏈接都將非常有用。提前致謝。保護用戶的文件被訪問,只有所有者可以訪問?
回答
如果您要將數據庫中的圖像和文件存儲爲二進制blob,那麼在檢索數據庫並將其顯示出來之前,只需檢查登錄用戶的權限即可。
如果您將它們存儲爲常規文件,您需要做的是將它們存儲在您網站的文檔根目錄之上,並且它們不能在網絡上公開訪問。然後檢索一個圖像,在檢查了數據庫的正確所有權後(我們不知道你的體系結構,所以替換,但是你已經存儲了屬於誰的),PHP可以檢索這個文件並用正確的頭文件發送給瀏覽器。
例如,顯示圖像:
// Check permissions...
// If permissions OK:
$img = file_get_contents("/path/to/image.jpg");
// Send jpeg headers
header("Content-type: image/jpeg");
// Dump out the image data.
echo $img;
exit();
可以,例如,保持與用戶ID匹配文件名的數據庫表來跟蹤誰擁有什麼。
很徹底的解釋。謝謝,1 upvote – bingjie2680
做到這正好是這樣的典型方法...
- 文件上傳
- 將文件移動到一個目錄,它是不從互聯網
- 的ID訪問爲文件生成並存儲在數據庫中
然後,用戶使用該ID從服務器請求文件。
爲此,您將有一個腳本根據ID查詢文件的數據庫,然後檢查用戶是否有權讀取它。如果用戶有權訪問,它會讀取文件並將其輸出到用戶的瀏覽器。
例如,在PHP讀取JPEG圖像:
<?php
header('Content-type: image/jpg');
readfile('/path/to/image.jpg');
感謝您的回答,1 upvote,但邁克爾的答案更徹底。所以我接受他的。 – bingjie2680
使用獨特和特別的文件名,只有將其呈現給用戶disired。 您可以在PHP中設置會話,並檢查會話是否包含文件。並使用httacces tio重定向到PHP。
<?
sessuion_start();
file_exists($_SESSION['specialkey']_$_GET['realfilename']){
include(/* include the file */); // or readfile
//or header location, but then the rteal URL will become visible
}else{
die('acces denied');
}
specialkey設置在PHP頁面製作顯示頁面,對於evey文件是唯一的,從DB獲得。這是我可以用最快的方式。
你可能奧斯陸希望將文件存儲在DIR是從PHP
只有accesable編輯 ,而不是包括你可以使用賈尼·哈蒂卡嫩方法
如果在圖像中使用'include',它們將不會顯示。我不會投下來,但這不是一個好的答案。 –
- 1. 基於PHP所有者的文件訪問保護
- 2. NOPCommerce密碼保護論壇,所以只有一些有訪問
- 3. 是否可以設置對文件夾的訪問權限,以便只有所有者可以訪問或獲取所有權?
- 4. 我如何限制訪問我的Firebase,以便只有我 - 所有者可以訪問它
- 5. Laravel只允許所有者用戶訪問路線
- 6. 如何保護文件,使其只能被java訪問?
- 7. 只有組中的用戶可以訪問所有子文件夾的文件夾
- 8. 訪問者是否可以修改它所訪問的對象
- 9. 安全ClickOnce文件,以便只有我的用戶可以訪問它?
- 10. 使腳本可以訪問文件,但不能訪問用戶
- 11. concrete5僅限文件所有者的限制文件訪問
- 12. ,只有我的一些用戶可以訪問
- 13. 保護對文件夾(IIS)的訪問
- 14. 訪問.htaccess受保護的文件Android
- 15. PHP保護的文件訪問
- 16. 如何配置access_token可以訪問哪個受保護的資源?所有的
- 17. MYSQL到outfile「訪問被拒絕」 - 但我的用戶有「所有」訪問..和文件夾是CHMOD 777
- 18. 如何創建可以被任何用戶訪問的文件?
- 19. ParseObject()保護訪問
- 20. 只有一個WordPress用戶組可以使用.htaccess訪問文件夾
- 21. 獲取所有可以訪問協作的用戶/組:BOX API
- 22. 所有訪問者只有一個對象實例?
- 23. 可以被類的所有成員函數訪問的棧
- 24. 訪問受保護或私有屬性
- 25. 用戶保護圖像訪問的有效方法
- 26. 如何讓所有可以訪問或查看文件的用戶?
- 27. 如何維護和訪問所有頁面都可訪問的javascript變量?
- 28. 問:基於令牌的認證API和Javascript,您可以保護其他客戶端文件不被訪問嗎?
- 29. 是否可以從「list-child」訪問「列表所有者」?
- 30. 確保只有特定用戶有權訪問
在Dropbox的文件可以由管理員進行訪問,不僅由文件的所有者。 – CodesInChaos