Frage

Ich habe einen Ordner auf meinem Webserver, der den Benutzern zum Hochladen von Fotos über eine ASP-Seite dient.

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

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

Bearbeiten:Ich habe die Frage aus Gründen der Klarheit geändert und meine Antworten als Kommentare geändert.

War es hilfreich?

Lösung

Außerdem würde ich empfehlen, die Benutzer nicht in einen Ordner hochladen zu lassen, der über das Internet zugänglich ist.Selbst die beste Erkennung des MIME-Typs schlägt möglicherweise fehl, und Sie möchten auf keinen Fall, dass Benutzer beispielsweise eine als JPEG getarnte ausführbare Datei hochladen, wenn Ihr MIME-Sniffing fehlschlägt, das in IIS jedoch ordnungsgemäß funktioniert.

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

Speichern Sie die hochgeladenen Dateien immer, immer in einem Verzeichnis irgendwo außerhalb des Dokumentstamms und greifen Sie über ein Zugriffsskript darauf zu, das eine zusätzliche Bereinigung durchführt (und zumindest explizit ein Bild/einen MIME-Typ festlegt).

Andere Tipps

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, unter dem IIS ausgeführt wird, Schreibberechtigung für den Ordner, da IIS die Datei-E/A durchführt.Ihre ASP-Seite sollte die Dateigröße überprüfen und über eine Form der Authentifizierung verfügen, um zu verhindern, dass Hacker Ihre Festplatte füllen.

Wenn Sie einen FTP-Server oder eine andere Dateiübertragungsmethode einrichten, hängt die Antwort von der von Ihnen gewählten Methode ab.

Sie müssen Schreibberechtigungen erteilen, können aber den MIME-Typ der Datei überprüfen, um sicherzustellen, dass ein Bild vorliegt.Sie können FSO wie folgt verwenden:

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

Außerdem verfügen die meisten Upload-COM-Objekte über eine Typeigenschaft, die Sie vor dem Schreiben der Datei überprüfen können.

Ihr bestes Preis-Leistungs-Verhältnis wäre wahrscheinlich die Verwendung einer Upload-Komponente (ich habe ASPUpload verwendet), mit der Sie Dateien aus einem Ordner hoch-/herunterladen können, auf den über die Website nicht zugegriffen werden kann.

Sie erhalten einige Authentifizierungs-Hooks und 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top