проверка правильности файлового пути

dmsuslov

Новичок
проверка правильности файлового пути

Не пинайте сильно, но облазив мануал не нашел решения довольно очевидной, на первый взгляд, задачи простыми средствами.

Задача такова: есть директория в файловой системе в которой нужно создать субдиректорию. Важное условие: субдиректория не должна выходить за пределы директории. Глубже - можно, выше - нельзя. Имя субдиректории передается от клиента и, следовательно, необходима валидация. Клиент может использовать переходы типа '/./', '/../' и лишние символы '/'. Как проверить, не вышел ли он за пределы директории? Функция realpath() тут не пойдет - она работает лишь с реально существующими файлами.

Что остается? Возиться с регэкспами?
 

DiMA

php.spb.ru
Команда форума
применяешь реалпат для существующей части твоего пути
для несуществующей (создаваемой) - регами

либо вся задача решается регами, но нужно чуток головой подумать
это тоже самое, что вычислить новый абсолютный адрес (имея текущий УРЛ) при анализе <a href=...>

регами нормализуем данные
регами проверяем безопасность по корню
и т.д.
 
Сверху