2010-05-20 128 views
2

我有以下。在Linux服務器上的/ tmp文件夾中臨時創建映像的網站。之所以將它存儲在這個文件夾中,是因爲這些圖像需要一段時間清除一次,並且使用tmpwatch清除tmp目錄非常容易。現在我的問題是在我的瀏覽器中顯示圖像?顯示來自tmp目錄的圖像

代碼

<img src="/tmp/3d34636.png" alt="image" /> 

我運行的Centos與PHP

回答

1

麻煩這裏,是這個img標籤會被瀏覽器(客戶端)進行處理。該客戶端無權訪問HTTP服務器的文件系統。

因此,您必須使用/ tmp /目錄中的文件來定義/ tmp目錄作爲HTTP服務器的有效位置(但請注意,它將提供此目錄中包含的任何其他文件,安全風險)。

或者您將這些生成的圖像存儲在HTTP服務器已經提供的子目錄中。

也可以在服務器上定義這個/ tmp位置,以便分析包含圖像文件名的URL的腳本。然後這個腳本將打開/ tmp /中的文件並提供它。

+0

+1在/ tmp中存儲這個東西真的不是一個好主意;公衆無法訪問/ tmp。 – 2010-05-20 09:49:30

+0

或者,選項3,您可以擁有一個PHP腳本,用於從/ tmp目錄提供文件,並根據需要進行過濾。 – psmears 2010-05-20 09:50:38

+0

@psmears是。但是構建過濾器可能比構建一段時間內清理過的腳本更麻煩。 – 2010-05-20 09:51:18

2

@Didier已經概述了這個問題和安全風險。即使您構建了接受文件名作爲參數的PHP腳本,然後通過/tmp目錄中的文件,您仍然可以將公共內容與可包含敏感數據的臨時文件混合在一起。你必須保留你的腳本生成哪些文件的列表,並且可以顯示哪些文件,哪些不是,否則就是安全漏洞。

我會說忘記/tmp儘管有這個優點,並將您的圖像存儲在他們自己的子目錄。經常刪除它們(例如,使用cron作業,或基於文件使用時間或「上次訪問時間」)。

1

你可以得到tmpwatch通過創建運行命令cron作業清理另一個目錄:

/usr/sbin/tmpwatch -umc 240 /path/to/directory 

240爲小時,該文件沒有被刪除之前使用的數量(以這個案例10天)。有關完整的詳細信息,請參閱man tmpwatch