Path Traversal (обход каталога)

Чтение файлов вне разрешённой папки через последовательности вроде ../ в пути.

СигнатураPath Traversal / Directory Traversal

Path Traversal возникает, когда имя файла берётся из ввода и используется без проверки. Последовательностями ../ атакующий выходит за пределы рабочей папки и читает системные файлы (например /etc/passwd).

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

import os

BASE = "/var/www/files"

def read_file(name):
    full = os.path.realpath(os.path.join(BASE, name))
    # Проверяем, что результат внутри BASE
    if not full.startswith(BASE + os.sep):
        raise Forbidden("Недопустимый путь")
    with open(full) as f:
        return f.read()
← Все записи: Веб-уязвимости и защита
Поддержать проект