2012-10-26 52 views
1

我真的很擔心php文件上傳安全和檢索這些文件。出於安全原因,我被告知要將上傳的圖像存儲在文檔根目錄之外。我可以上傳,但我不確定我知道如何最好地爲我的MYSQL和HTML結構提供這些圖片。這可能是一個愚蠢的做法,但這裏是我的問題:PHP如何使用MYSQL檢索存儲在文檔根目錄之外的圖像?

我有5個圖像存儲在我的文檔根目錄中。在我的MYSQL數據庫中,我存儲了該圖像的URL路徑(例如www.mywebsite.com/images/123.jpg)。我的HTML索引將查詢MYSQL並選擇圖像路徑,然後列出圖像的所有路徑,然後顯示圖像。

但是我有圖像存儲在我的文檔根目錄之外(出於安全原因)。有沒有一種方法可以將數據存儲到MYSQL的URL路徑中,例如www.mywebsite.com/images/outofroot.jpg,然後像上面那樣進行選擇查詢?

+0

你可以用一個php腳本作爲img src服務器。該腳本確實可以在根外進行訪問。 '' – 2012-10-26 04:06:25

+0

我對PHP有點新鮮。 「用php腳本來服務他們」是什麼意思? script.php中有什麼?以及這與「?image_id」有關? – user1441581

+0

這是否使它更清晰:http://stackoverflow.com/questions/855135/best-way-to-limit-access-to-images-is-this-about-right – 2012-10-26 04:20:04

回答

0

我很好奇你提到的這些前面提到的「安全原因」是什麼,所以如果你能夠澄清的話,那將非常棒!

我的PHP是一個有點生疏,但我記得你應該爲JPEG做這樣的事情:

header("Content-type: image/jpeg"); 
$img = imagecreatefromjpeg("/path/to/file.jpg"); 
imagejpeg($img); 

首先,我們設置了header以匹配JPEG圖像的。接下來,我們使用imagecreatefromjpeg將圖像加載到內存中。最後我們用imagejpeg

這個例子僅限於jpegs,根據您的使用情況,您可能需要其他類型。你可以寫一些邏輯(作爲一個練習;))爲其他類型的這項工作。在PHP文檔中查看imagepngimagegif和其他信息,瞭解如何執行此操作。

如果您需要進行某種安全檢查(例如用戶必須被授權查看圖片),那麼將它們存儲在工作目錄之外並像這樣加載它們是一個好主意。

但是,如果您正在提供的圖像不需要任何權限檢查即可訪問,那麼最好是正常提供服務,而不是讓中間人爲他們提供服務。

+0

好吧,我正在開始一個社交網站,用戶可以上傳自己的照片並分享圖片。我認爲將這些圖片存儲在根目錄下,並且只允許社區成員查看這些圖片將是一個很好的安全防範措施。你認爲我需要存儲工作目錄以外的圖片嗎? – user1441581

+0

雖然可以使用Web服務器設置權限以防止人們直接訪問這些文件,但是將它們存儲在工作目錄之外更容易,也更不容易出錯。 如果您使用的是Apache並且不想將它們存儲在工作目錄之外,那麼之前發佈的類似問題已經在處理這種情況:http://stackoverflow.com/questions/5605078/how-to -restrict-禁止接入到特定文件類型 - 例如-AS-JS-CSS-內部-一個 – vtsatskin

相關問題