2009-04-24 4 views
3

Meine Website möchte, dass Benutzer ihre Fotos hochladen ... aber wie kann ich unseren Server vor Schaden bewahren? Wenn Sie nur JPGs zulassen, sollten Sie Virenprobleme vermeiden. Was aber, wenn jemand eine 10-GB-Datei auswählt - wird das die gesamte Website verlangsamen?Hochladen von Fotos - Wie kann ich unsere Website sicher/stabil halten?

Wir verwenden Classic ASP und IIS6 (Entschuldigung, aber das ist so, das kann ich nicht ändern!). Zuvor haben wir eine DLL von einer Firma namens Persits verwendet, um Uploads zu verarbeiten. Es wäre jedoch für andere hilfreich, wenn wir diese Diskussion auch auf andere Sprachen/Technologien ausdehnen würden.

ASPs können die Größe einer Datei erst erkennen, wenn das Hochladen abgeschlossen ist. Oder kann ich die Inhaltslänge im HTTP-Header überprüfen, bevor ich mit der Übertragung beginne?

Q1. Gibt es andere Möglichkeiten, wie jemand die Upload-Möglichkeit missbrauchen könnte?
Q2. Wie kann ich die Gefahr begrenzen, dass die Site läuft und der Server sicher ist?

Vielen Dank.

+0

Meinst du eine Firma namens "Persists"? – Eddie

+0

Nein, es ist geschrieben Persits. –

Antwort

2

In weiterhin besteht, können Sie die maximale Dateigröße festlegen ein Benutzer hochladen:

Upload.SetMaxSize 100000, True 

Die „True“ oben zeigt, dass die Datei, wenn über die Max Größe abgelehnt werden soll. Wenn der Wert auf "False" gesetzt ist, wird die Datei erstellt.

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

+0

danke, aber lädt es zuerst die ganze Datei hoch, bevor es aussieht, wie groß es ist? –

+0

Aus dem Benutzerhandbuch: "Ein Wert von SetMaxSize wird auf jede hochgeladene Datei einzeln angewendet, anstatt auf einen ganzen Upload. Da AspUpload im Voraus nicht wissen kann, wie viele Dateien in einem POST vorhanden sind und wie groß sie sind Der Upload-Vorgang wird immer ausgeführt, selbst wenn die allererste Datei den angegebenen Grenzwert überschreitet. " Die Datei wird hochgeladen, und wenn sie fehlschlägt, wird sie abgeschnitten oder gelöscht, abhängig von der Einstellung. – Katy

+0

Hmm, das ist eine Schande - es bedeutet, dass eine 10-GB-Datei den Server immer noch lange beschmutzen würde, anstatt rausgeschmissen zu werden, sobald sie über 2 MB (sagen wir) ging. Danke, dass du das für mich suchst! –

0

Diese Datei-Upload-Größe zu erzwingen angezeigt: http://www.aspupload.com/

Ich bin nicht sicher, wie es sie verarbeitet.

+0

Ja, das ist die Persits Komponente Katy und ich oben erwähnt. Es überprüft die Dateigröße erst, wenn das Hochladen abgeschlossen ist, was eine Schande ist. –

2

Wenn Sie ASP.Net wurden mit Ihnen eine maximalen Größe der Datei in web.config angeben können (oder machine.config) und ASP.Net wirft einen Fehler nach der Größe in Überschreiten der Upload Das heißt, wenn Sie ein Limit von 4 MB angeben und einige versuchen, ein 100 MB hochzuladen, wird sich .Net beschweren, sobald es mehr als 4 MB hochgeladen hat.

Die betreffende Eigenschaft ist maxRequestLength, die MSDN accorsing „Gibt den Grenzwert für den Eingangsstrom Pufferung threshold, in KB. Diese Grenze verwendet werden kann, Denial-of-Service-Angriffe zu verhindern, die beispielsweise verursacht werden, durch Benutzer, die große Dateien auf dem Server veröffentlichen. "

Zum Beispiel.

Ich bin nicht sicher, ob es ein Äquivalent in klassischen ASP gibt.

0

Ich habe gerade einen Artikel auf, wie zu begrenzen Größe unter Verwendung einer Einstellung namens ‚AspMaxRequestEntityAllowed‘ in IIS gefunden: http://www.banmanpro.com/support2/File_Upload_limits.asp

aber es funktioniert nicht - mein Server bereits, dass bei 200k Einstellung und noch Wir laden gerade 1Mb-Dateien hoch!

+0

Liegt das daran, dass beim Hochladen von Dateien der Content-Length-Header in der http-Anfrage nicht vorhanden ist? –

+0

Angenommen chunked Transfer-Codierung umgeht dies. –

0

Sie können die übergroßen Zugriffe auf die IIS-Ebene ablehnen, bevor sie sogar mithilfe von Microsofts UrlScan-Tool für Ihre Anwendung erhalten: http://technet.microsoft.com/en-us/security/cc242650.aspx

Für IIS 6, es sieht aus wie Sie nicht einmal, dass benötigen. Sie sollten in der Lage sein, die MaxRequestEntityAllowed- und ASPMaxRequestEntityAllowed-Metabasiseigenschaften auf den gewünschten Maximalwert festzulegen, und die Anforderungen werden an diesem Punkt abgeschnitten.

+0

Mein Server hat bereits ASPMaxRequestEntityAllowed bei 200k und wir laden gerade 1Mb-Dateien in Ordnung! Es scheint es zu ignorieren. –

+0

Haben Sie versucht, beide Werte zu setzen? Oder werden Uploads mit Chunked Transfer Encoding durchgeführt? Außerdem glaube ich, dass diese Einstellungen nur für ASP und nicht für ASP.NET gelten. –

+0

Ich kann nur annehmen, dass wir Chunked-Transfer-Codierung verwenden (obwohl ich nicht wirklich weiß, was das ist, tut mir leid!). –

Verwandte Themen