2013-04-11 18 views
5

我與一位同事就PHP安全性進行了一次有趣的討論。PHP表單和DOM操作的安全性

比方說,一個人有一個PHP網站運行一個標準的HTML表單。攻擊者決定使用Chrome開發人員工具並添加DOM enctype="multipart/form-data"file input

攻擊者上傳文件,如果它是病毒,它可能不會執行,但它仍然在使用帶寬/存儲。僅僅通過這樣做,文件是否會進入PHP /tmp目錄?這不會使每個表單都變得有些不安全,因爲用戶可以以任何形式上傳文件?

在更大規模的情況下,如果100,000人將其添加到DOM並上傳了隨機千兆字節文件,該怎麼辦?這不會暫時讓他們達到他們的帶寬和/或存儲標誌嗎?

+1

您仍然需要某種服務器端代碼來處理上傳,如果它不存在,它將不會上傳! – Marty 2013-04-11 13:24:10

+1

它會自動進入'$ _FILES ['name'] ['tmp_name']'不是嗎? – JREAM 2013-04-11 13:25:03

+2

如果您有一個託管服務提供商向您收取**傳入**帶寬,請告訴他們跳下一座橋。但是,是的,東西會自動存儲在'/ tmp'中,但是會隨着時間的推移而被回收。 – 2013-04-11 13:28:20

回答

3

上傳本身發生,無論如何。該文件存儲在上傳臨時目錄中,然後啓動PHP腳本。如果腳本不處理上傳的文件,腳本執行完畢後,文件將自動從臨時目錄中刪除。

當超過最大大小時,服務器是否會中止請求是配置問題。

+0

啊!我忘記了最大文件大小上傳和超時 - 我認爲這些安全措施將抵消這個問題! – JREAM 2013-04-11 13:32:30

+2

如果您的所有上傳PHP腳本都位於一個目錄下,那麼您可以使用.htaccess文件中的LimitRequestBody來控制上傳文件的大小。在Webroor的.htaccess文件和上載PHP腳本所在的目錄下放入LimitRequestBody(200 KB)的較小值,給LimitRequestBody – Amit 2013-04-11 13:42:20