/
smychkov
/
SStorage
Обзор
Документация
Войти
/
smychkov
/
SStorage
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/util/utils.hpp
50 строк
2 KB
Андрей Смычков
security: комплексные фиксы по результатам аудита
25 апр 2026, 10:00
25 апр 2026, 10:00
5f1be8e
Код
Авторство
О чём код?
#ifndef SSTORAGE_UTIL_UTILS_HPP #define SSTORAGE_UTIL_UTILS_HPP //============================================================================ // Общие утилиты //============================================================================ #include <cstdint> #include <string> #include <vector> namespace sstorage { namespace util { // Текущий timestamp для логов (человекочитаемый формат) std::string currentTimestampHuman(); // Текущее время в наносекундах uint64_t getCurrentTimeNanos(); // Проверить существование файла/директории bool fileExists(const std::string& path); // Создать директорию (если не существует) bool createDirectory(const std::string& path); // Удалить пробелы из начала/конца строки std::string trim(const std::string& str); // Разделить строку по разделителю std::vector<std::string> split(const std::string& str, char delimiter); // Проверить что путь безопасен (нет .., /, управляющих символов). // Используется для валидации одного компонента пути (имени файла), // не полного пути. bool isPathSafe(const std::string& path); // Валидировать путь к директории данных: // - разрешить только абсолютный путь или ./path (текущая директория) // - запретить системные директории (/etc, /proc, /sys, /dev, /boot, /usr, /bin, /sbin) // - запретить управляющие символы в пути // @param path — путь как передан пользователем // @param resolved — канонический путь (вывод), если функция вернула true // @return true если путь безопасен bool validateDataDirectory(const std::string& path, std::string& resolved); } } #endif