Книга: Разработка приложений в среде Linux. Второе издание
22.3.2. Разбор имен файлов
22.3.2. Разбор имен файлов
Абсолютно обычным действием для привилегированных приложений является предоставление доступа к файлам ненадежным пользователям и разрешение этим пользователям передавать имена файлов, к которым необходим доступ. Хорошим примером служит Web-сервер. URL-адрес HTTP содержит имя файла, полученное сервером как запрос на передачу удаленному (ненадежному) пользователю. На Web-сервере необходимо убедиться, что возвращаемый файл — это именно тот, который был сконфигурирован на отправку, а также внимательно проверить правильность имен файлов.
Представьте Web-сервер, обслуживающий файлы из home/httpd/html
, выполняющий это посредством простого добавления имени файла из URL, который требуется предоставить, концу /home/httpd/html
. Такой процесс дает правильный файл, однако это также позволяет удаленным пользователям увидеть любой файл системы, к которой Web-сервер имеет доступ, просто запросив, к примеру, файл ../../.. /etc/passwd
. Подобные каталоги ..
необходимо явно проверять и отклонять. Системный вызов chroot()
предоставляет хороший способ, позволяющий сделать обработку имен файлов в программах более простой.
Если имена файлов передаются в другие программы, то необходима еще более тщательная проверка. Например, если в имени файла используется начальный символ -
, то весьма вероятно, что другая программа интерпретирует его как опцию командной строки.
- 14.6.2. Добавление универсализации файловых имен
- 6.10. Обработка файлов
- Пример 12-40. Использование getopt для разбора аргументов командной строки
- Ширина и глубина ассортимента
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Создание файлов с блокировкой
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- Имена индексов ограничений
- Пример применения метода «пять почему»
- Имена объектов длиной 68 символов
- Рекомендуемое расширение для файлов баз данных - *.ib