2008-08-22 11 views
2

Ich habe einen Ordner in meinem Webserver für die Benutzer verwendet, um Fotos mit einer ASP-Seite hochladen.Wie sichere ich einen Ordner, in dem Benutzer Dateien hochladen können?

Ist es sicher genug, um IUSR Schreibrechte für den Ordner zu geben? Muss ich etwas anderes sichern? Ich habe Angst, dass Hacker die ASP-Seite umgehen und Inhalte direkt in den Ordner hochladen.

Ich verwende ASP classic und IIS6 auf Windows 2003 Server. Der Upload erfolgt über HTTP, nicht über FTP.

Bearbeiten: Ändern der Frage für Klarheit und Ändern meiner Antworten als Kommentare.

Antwort

3

Ich würde auch empfehlen, die Benutzer nicht in einen Ordner hochladen zu lassen, der aus dem Internet erreichbar ist. Selbst die beste MIME-Typ-Erkennung kann fehlschlagen, und Sie möchten nicht, dass Benutzer beispielsweise eine als jpeg getarnte ausführbare Datei hochladen, wenn Ihr MIME-Sniffing fehlschlägt, aber das in IIS ordnungsgemäß funktioniert.

In der PHP-Welt ist es noch schlimmer, denn ein Angreifer könnte ein schädliches PHP-Skript hochladen und später über den Webserver darauf zugreifen.

Immer, immer speichern die hochgeladenen Dateien in einem Verzeichnis irgendwo außerhalb des Document-Root und greifen Sie über einige zugreifenden-Skript, das zusätzliche Hygienisierung tut (und zumindest explizit aufgenommen Bild/was auch immer MIME-Typ.

+0

Ich akzeptiere die Antwort, aber ich bin mir immer noch nicht sicher, ob es wirklich notwendig ist, die Datei in einem Verzeichnis außerhalb des Stammverzeichnisses zu haben.Es wird einige Leistungsprobleme hinzufügen, denke ich. –

+0

Wenn Sie auf korrekt funktionierendes Caching achten, sind die Leistungsprobleme vernachlässigbar. Ich habe geantwortet, wie man dies in einer anderen Frage hier tut: http://beta.stackoverflow.com/questions/48555/best-way-to-compress-html-css-js-with-moddeflate-and-modgzip-disabled # 48761 – pilif

1

Wie lädt der Benutzer die Fotos hoch? Wenn Sie eine ASP-Seite schreiben, um die hochgeladenen Dateien zu akzeptieren, benötigt nur der Benutzer, für den IIS ausgeführt wird, Schreibberechtigung für den Ordner, da IIS die Datei-E/A ausführt. Ihre ASP-Seite sollte die Dateigröße überprüfen und eine Form der Authentifizierung haben, um zu verhindern, dass Hacker Ihre Festplatte füllen.

Wenn Sie einen FTP-Server oder eine andere Dateiübertragungsmethode einrichten, ist die Antwort spezifisch für die von Ihnen gewählte Methode.

+0

Ja, ich verwende eine ASP-Seite, um den Upload durchzuführen, aber ... Es ist sicher, IUSR Schreibrechte für den Ordner zu geben? Wenn ein Hacker versucht, in denselben Ordner zu schreiben, wird auch IIS beteiligt sein. –

+0

ist es wahrscheinlich die bequemste Methode. Eine andere Lösung wäre, sich mit dem Server selbst zu verbinden und die hochgeladene Datei beispielsweise per FTP erneut hochzuladen, aber der Sicherheitsvorteil für das Problem ist es nicht wirklich wert. – pilif

0

Sie müssen Schreibberechtigungen gewähren, aber Sie können den Mime-Typ der Datei überprüfen, um ein Bild zu gewährleisten. Sie können FSO verwenden, wie so:

set fs=Server.CreateObject("Scripting.FileSystemObject") 
set f=fs.GetFile("upload.jpg") 
'image mime types or image/jpeg or image/gif, so just check to see if "image" is instr 
if instr(f.type, "image") = 0 then 
    f.delete 
end if 
set f=nothing 
set fs=nothing 

Auch die meisten Upload-COM-Objekte eine Art Eigenschaft haben, dass Sie gegen vor dem Schreiben der Datei überprüfen konnte.

+0

Sie verstehen es falsch. Ich frage nach Hackern, die die ASP-Seite umgehen. –

+0

Sie können auch nicht garantieren, dass der MIME-Typ korrekt ist, da dieser vom Browser übergeben wird (soweit ich mich erinnere). Man sollte das Bild über etwas wie ImageMagik öffnen und prüfen, ob die Dimensionen richtig gelesen werden können. – nlucaroni

0

Ihre beste buck for the buck wäre wahrscheinlich, eine Upload-Komponente zu verwenden (ich habe ASPUpload verwendet), mit der Sie Dateien von einem Ordner hochladen/herunterladen können, auf den von der Website nicht zugegriffen werden kann

Sie erhalten einige Authentifizierungs-Hooks Sie müssen sich keine Sorgen machen, dass jemand zufällig den Ordner durchsucht und die Dateien herunterlädt (oder in Ihrem Fall hochlädt), da die Dateien nur über die Komponente verfügbar sind.