我正在開發一個有點文件管理系統。最終用戶是商業用戶。你會允許哪些文件類型/擴展名用於文檔管理應用程序?
我目前檢查並允許文件上傳,只有當他們是下列條件之一:
"png|jpe?g|gif|xls|doc|docx|csv|ppt|txt|pdf|rtf"
我的問題是 -
如果我添加「XML」進入名單?他們可以導致任何安全問題?
什麼其他文件類型/擴展我可以添加到這?
或者
我應該檢查NOT IN "exe|bat|php|js"
,並允許所有其他類型的?
感謝您的建議。
我正在開發一個有點文件管理系統。最終用戶是商業用戶。你會允許哪些文件類型/擴展名用於文檔管理應用程序?
我目前檢查並允許文件上傳,只有當他們是下列條件之一:
"png|jpe?g|gif|xls|doc|docx|csv|ppt|txt|pdf|rtf"
我的問題是 -
如果我添加「XML」進入名單?他們可以導致任何安全問題?
什麼其他文件類型/擴展我可以添加到這?
或者
我應該檢查NOT IN "exe|bat|php|js"
,並允許所有其他類型的?
感謝您的建議。
我應該檢查NOT「exe | bat | php | js」並允許所有其他類型嗎?
否白名單比黑名單要好。有很多很多危險的文件類型比您可能知道的要多。那四個幾乎沒有劃傷表面。
如果我在列表中添加「xml」?他們可以導致任何安全問題?
是的它可以,[X] [HT] ML可能包含腳本,它在服務它的站點的安全上下文中運行。它允許任何可以上傳文件到您的網站的人將JavaScript注入您的網站(竊取cookie,請求僞造等)。
但是,它實際上並沒有增加任何您尚未擁有的安全問題。因爲即使通過filetype/extension加入白名單也不安全,這要感謝IE瀏覽器及其不正當的類型嗅探。您可以上傳.txt
文件,並使用Content-Type: text/plain
標題正確投放它,但如果它包含IE認爲看起來像HTML的序列,則IE將忽略您並將其呈現爲HTML-boom,XSS。
(同樣是任何其他類型的真真的,但.TXT是最脆弱的公開)
有兩種方法來解決這個爛攤子:
爲所有用戶上傳文件從不同的主機名到主應用程序站點,以便它們處於不同的JS安全上下文中,並且不共享cookie或認證數據。
爲所有用戶上傳的文件提供Content-Disposition: attachment
標題,以便它們始終被下載並且不會在瀏覽器中顯示。
(2)對自己應該是防水的,但實際上在過去曾有周圍由於瀏覽器和插件漏洞的方式,所以我不知道我在它會完全信任。 (1)自行停止XSS,但它並不會阻止其他像包含iframes的HTML文件一樣利用網站。
所以最好兩個都做。
不要忘記其餘的新MS Office格式,xlsx,pptx和類似的文件。
至於安全風險,它取決於這些文件將在何處/如何被訪問。從文檔管理的角度來看,XML不會是我默認假設的東西,但我可以看到它需要。
我不會做通配符排除列表,除非您保護內容的服務。
添加新的MS Office文檔擴展和開放式辦公文檔,您可能很樂意去。 也許添加Zip/Rar壓縮文件也是一個選項,但是您應該考慮限制直接訪問文件。
也許增加一個明確的信息和鏈接,新的文件類型可以在請求時添加也可以幫助嗎?
啊..好點。謝謝。 – TigerTiger 2009-10-13 15:15:07