2009-04-24 54 views
3

我的網站希望用戶上傳他們的照片......但是,如何讓我們的服務器免受傷害?只允許JPG文件可以避免病毒的麻煩,但如果某人選擇了一個10Gb的文件會如何減慢整個網站的速度?上傳照片 - 我如何保持我們的網站安全/穩定

我們使用傳統的ASP和IIS6(抱歉,但是這是怎麼回事,不能改變的!)。以前我們使用了一個名爲Persits的公司的DLL來處理上傳。但是,如果我們將此討論擴展到其他語言/技術,對其他人也會有所幫助。直到它已完成上傳

平均價格無法檢測到文件的大小,所以這就是一種痛苦。或者我可以在開始傳輸之前檢查HTTP標頭中的內容長度嗎?

Q1。有沒有其他的方式可能會有人濫用上傳設施?問題二:
Q2。我如何限制危險以保持網站運行和服務器安全?

謝謝。

+0

你的意思是一家名爲「Persists」的公司嗎? – Eddie 2009-04-24 16:39:27

+0

不,它拼寫Persits。 – 2009-04-27 08:17:33

回答

2

在仍然存在,您可以設置用戶可以上傳文件的最大尺寸:

Upload.SetMaxSize 100000, True 

「真正的」上面顯示該文件,如果是在最大尺寸被拒絕。如果設置爲False,那麼文件將被破壞。

http://www.aspupload.com/object_upload.html#SetMaxSize

+0

謝謝,但是它在它看起來很大的時候先上傳整個文件? – 2009-04-24 16:44:46

+0

從用戶手冊: 「由SetMaxSize設置的值單獨應用於每個上傳的文件,而不是整個上傳。由於AspUpload無法預先知道POST中有多少文件以及它們的大小,將永遠允許上傳過程通過,即使第一個文件超過了指定的限制「 因此文件將被上傳,如果失敗,它將被截斷或刪除,具體取決於設置。 – Katy 2009-04-27 08:33:44

0

這似乎強制執行上傳文件大小:http://www.aspupload.com/

我不知道如何處理它。

+0

是的,這是凱蒂和我上面提到的Persits組件。它沒有檢查文件的大小,直到它完成上傳,這是一個恥辱。 – 2009-04-27 09:38:52

2

如果您正在使用ASP.Net,您可以指定在web.config中(或machine.config中)文件的最大尺寸,並且超出了尺寸後在ASP.Net會拋出一個錯誤上傳。也就是說,如果您指定4Mb的限制,並且someome嘗試上傳100Mb,那麼.Net會在上載超過4Mb時立即投訴。

在考慮中的屬性爲的maxRequestLength,其accorsing到MSDN「指定輸入流緩衝閾值極限,以KB。可以使用此限制,以防止被引起,例如拒絕服務攻擊,通過用戶將大文件發佈到服務器。「

例如。

<configuration> 
    <system.web> 
    <httpRuntime maxRequestLength="4000" .... 

我不確定在經典ASP中是否有等價物。

0

我剛剛發現瞭如何使用IIS中稱爲「ASPMaxRequestEntityAllowed把」設置來限制大小的文章: http://www.banmanpro.com/support2/File_Upload_limits.asp

但是,這是行不通的 - 我的服務器已經有了,在200K,但設置我們目前正在上傳1Mb檔案!

0

您可以拒絕在IIS級別的超大型請求之前,他們甚至得到您的應用程序通過使用微軟的URLScan工具:http://technet.microsoft.com/en-us/security/cc242650.aspx

對於IIS 6,它看起來像你甚至不需要說。您應該能夠將MaxRequestEntityAllowed和ASPMaxRequestEntityAllowed元數據庫屬性設置爲您希望的最大值,並且請求將在此時被截斷。

相關問題