2011-09-29 245 views
0

我建立一個文件共享網站,我想,我希望我的用戶能夠上傳和分享任何東西。允許用戶上傳任何東西

聽起來很危險,我知道。但是,有沒有一種方法可以讓這成爲可能?例如,當用戶用MIME類型請求鏈接時強制下載?而不是在頁面上「跑步」。

任何想法如何讓沒有安全問題的任何文件類型。

感謝

+0

大多數瀏覽器阻止可執行文件的自動下載,但用戶可以接受提示並忽略警告。你在問如何規避這個警告? – aus

+2

我很困惑。你的問題標題和第一句話是關於允許上傳,而你的第二句話是關於強制下載。我不知道你在說什麼。然後你的第三個問題說「如何允許一個文件類型」但沒有明確的上下文 - 允許什麼,允許什麼,允許什麼目的? –

+0

也,你沒有發佈代碼。沒有代碼,即使你的問題確實有意義也很難幫助你 –

回答

4
  1. 商店上不通過瀏覽器用戶可訪問的某個位置。 (所以在文件根目錄下)
  2. 加載文件時,使用readfile()函數。
  3. 設置正確的標題,其中包括:

    header("Content-Description: File Transfer"); 
    header("Content-Disposition: attachment; filename=[INSERT FILENAME HERE]"); 
    

    而且還使用了正確的Content-Type頭爲每種類型的文件

+0

有趣!這個解決方案有沒有安全防範措施? –

+1

始終確保文件不會在服務器上執行,因爲它可能會損害您的服務器。除此之外,我不會看到任何重大風險 –

+1

完美。欣賞響應,經過一番研究後,這似乎成爲許多人在運行無限制文件存儲服務器時所使用的解決方案。 –

-1

任何想法如何讓沒有安全問題的任何文件類型。

你自己說出來。這就像是想製作炒雞蛋,而不想打破雞蛋。

+0

那麼Megaupload和Rapidshare如何設法做到這一點? –

2

如果您只希望它對其他用戶是危險的(因爲他們將立即共享病毒纏繞的文件),但爲代碼注入攻擊提供一些保護,您可能會考慮將上傳保存在數據庫BLOB字段。這應該至少使注入將在服務器上運行的代碼更難。

+0

這會在下載大文件時向SQL服務器添加巨大負載嗎? –

1

您可以允許用戶通過一個簡單的HTML multipart formPHP's $_FILES一起上傳任何東西。只有我看到的問題是文件大小限制。

你不是可以簡單地張貼鏈接到任何文件。用戶的瀏覽器設置決定文件是否被執行或下載,而不是你的。所以你可以建議他們右鍵點擊它們,並選擇'保存到',但除此之外它是有限的。