Защита загрузки файлов

Проверка типа, размера и хранения загружаемых файлов предотвращает выполнение вредоносного кода.

СигнатураSecure file upload

Небезопасная загрузка файлов позволяет атакующему залить исполняемый скрипт (например shell.php) и выполнить его на сервере, либо перегрузить хранилище. Доверять расширению или заявленному типу нельзя.

Как защититься: проверяйте тип по содержимому, а не по расширению; ограничивайте размер; храните файлы вне корня веб-сервера и отдавайте без выполнения; генерируйте новые имена; запускайте антивирус при необходимости.

ALLOWED = {"image/png", "image/jpeg"}

def save_upload(file):
    if file.content_type not in ALLOWED:
        raise ValueError("Недопустимый тип файла")
    if file.size > 5 * 1024 * 1024:
        raise ValueError("Файл слишком большой")
    # Сохраняем со сгенерированным именем вне веб-корня
    save(file, name=new_random_name())
← Все записи: Веб-уязвимости и защита
Поддержать проект