2010-09-28 85 views
10

我正在使用PHP/MySQL來處理圖片上傳。我希望所有上傳到登錄用戶圖庫的圖像只能由登錄用戶訪問。我不希望人們能夠猜出文件名並直接鏈接到它。如何保護用戶在我的網站上上傳的私人照片?

我在想,我只能將圖像存儲在webroot之外並通過某些PHP訪問它們。但是,如果用戶想通過鏈接與朋友分享圖片,我會怎麼做?

是否有任何其他步驟需要我確定只有用戶才能看到他們的照片?我非常重視用戶隱私,並希望得到這個權利。

感謝您的幫助提前!

回答

9

你原來的假設是正確的。將文件存儲在公共目錄之外,並使用PHP腳本檢查授權並顯示圖像。

要解決共享問題,你可以給他們一個領域,他們可以說「分享照片」,它會顯示一個URL像

http://www.yoursite.com/image/12390123?v=XA21IW 

XA21IW將被存儲在一個表中的一些獨特的哈希和他們可以指定一個生命週期,或者你可以自己編碼。當頁面加載並傳入v時,可以查找表以確定它是否是該圖像標識的有效散列。

你在這裏有一些選擇。他們每次單擊「共享照片」,您可以:

  1. 銷燬所有的舊哈希
  2. 添加到堆棧
  3. 讓他們配置的到期等等...

或者只需允許圖像爲公共/私人。

+0

+1我是2s發佈非常相似的東西。 – Nacho 2010-09-28 18:42:21

+1

感謝您的快速響應。這與我計劃採取的方法非常相似。我基本上想確保沒有更安全的方法,而且我沒有忘記任何事情。謝謝! – sherril8 2010-09-28 20:15:44

2

您可以使用基於配置文件(用戶)的共享系統,其中登錄用戶A可以指示登錄用戶B被允許查看圖像C,並可以隨意添加/刪除這些權限。

如果無法將查看連接到用戶帳戶,您可以在圖像或圖像組(例如圖庫)上查看密碼。查看圖像的URL將檢查用戶/所有者是否是一個查看者,如果不是,則會要求輸入密碼。

1

我認爲沒有任何問題是將圖像存儲在webroot之外並通過某些PHP訪問它們。當用戶共享它時,您可以隨時使用php腳本訪問它們。即使這樣做更安全,因爲您始終可以執行一些安全檢查。在實際顯示圖像之前。

謝謝。

0

您將圖像保存到您的服務器,放置圖像名稱,您需要的數據和一些散列在您的DB .... 比您設置的圖像路徑爲php文件稱爲images.php您收到此散列與GET並通過哈希從您的數據庫中找到圖像,並將頭部設置爲圖像/ GIF示例創建圖像。圖像路徑將是images.php?hash = abcdefg。

其他認爲關於用戶許可等等...我認爲有一些迴應這個解決方案...它很安靜容易...

相關問題