Techniken zur Minderung von Datei-Upload-Risiken
Um die Risiken im Zusammenhang mit Datei-Upload-Schwachstellen zu mindern, sollten Webanwendungen eine umfassende Reihe von Sicherheitsmaßnahmen implementieren. Hier sind einige wichtige Techniken:
Datei-Typ-Validierung
Überprüfen Sie den Dateityp der hochgeladenen Datei, um sicherzustellen, dass er dem erwarteten Dateityp entspricht. Dies kann durch die Überprüfung der Dateierweiterung, des MIME-Typs oder des tatsächlichen Dateiinhalts erfolgen.
import magic
def validate_file_type(file_path, allowed_types):
mime_type = magic.from_file(file_path, mime=True)
if mime_type not in allowed_types:
return False
return True
Dateigrößenbeschränkung
Schränken Sie die maximale Dateigröße ein, die hochgeladen werden kann, um Denial-of-Service-Angriffe oder das Hochladen übermäßig großer Dateien zu verhindern.
MAX_FILE_SIZE = 1024 * 1024 ## 1 MB
def validate_file_size(file_path, max_size=MAX_FILE_SIZE):
file_size = os.path.getsize(file_path)
if file_size > max_size:
return False
return True
Bereinigung und Kodierung
Bereinigen und kodieren Sie den Namen der hochgeladenen Datei, um die Einbeziehung böswilliger Zeichen oder Skripte zu verhindern.
import re
def sanitize_file_name(file_name):
return re.sub(r'[^a-zA-Z0-9_\-\.]', '_', file_name)
Datei-Pfad-Validierung
Überprüfen Sie den Dateipfad, um sicherzustellen, dass die hochgeladene Datei an einem sicheren Ort gespeichert wird, z. B. in einem dedizierten Upload-Verzeichnis, und nicht in einem sensiblen Systemverzeichnis.
UPLOAD_DIR = '/var/www/uploads'
def validate_file_path(file_path):
if not file_path.startswith(UPLOAD_DIR):
return False
return True
Virenscan und Malware-Erkennung
Führen Sie einen Virenscan und eine Malware-Erkennung an den hochgeladenen Dateien durch, um das Hochladen schädlicher Inhalte zu erkennen und zu verhindern.
import subprocess
def scan_for_malware(file_path):
try:
subprocess.check_call(['clamdscan', file_path])
return True
except subprocess.CalledProcessError:
return False
Durch die Kombination dieser Techniken können Sie ein robustes Datei-Upload-Sicherheitssystem erstellen, das die Risiken im Zusammenhang mit Datei-Upload-Schwachstellen mindert.