[英]Secure PHP file Up- and Download with user supplied names
我正在編程一個文件轉換器。 因此,用戶上載了一個文件,例如test.txt
,然后進行轉換,然后將下載鏈接發送回該用戶。 出於安全性考慮,我建議在文件上傳后立即更改其名稱,如此處建議的那樣。
Instead create files and folders with randomly generated names like fg3754jk3h
問題開始於下載。 為了獲得更好的用戶體驗,我希望可下載文件的名稱與用戶提供的文件的名稱相同,而不是隨機字符串。 目前,我在Chrome中也遇到了錯誤:
<Filename> is an unusual download and may be harmful. [translated]
我認為這也可能是加密文件名的結果。
所以我的問題是:將文件名改回原始名稱而又沒有任何安全問題的最佳方法是什么?還是我應該對文件名進行嚴格驗證? 並且這將擺脫顯示的錯誤消息嗎?
您可以在將文件返回給用戶時提供原始文件名。 (請參閱下載名稱與存儲名稱不同的文件,以了解幾種操作方法)
不使用原始名稱存儲文件的原則是避免惡意用戶試圖將一些腳本上載到他可以執行的服務器上。 您應該這樣做,但也應該將該文件放在Web服務器無法訪問的臨時目錄中。
例如:
/var/www
/var/uploads
而不是/var/www/uploads
。 這樣,用戶將永遠無法訪問該文件(至少可以從Web上訪問) cute-cat.jpg
圖像),保持文件擴展名沒有問題。 例如:kr3242sd93fdsh.jpg Content-Disposition
的filename
屬性中定義原始文件filename
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.