xbs
Новичок
Привет!
Если коротко, есть веб-сервер (один из многих в кластере), на котором происходит загрузка файла. Этот файл отправляется на мастер сервер, который в дальнейшем синхронизирует изменения файлов с другими веб-серверами.
Чтобы отправить файл, мы отсылаем его содержимое и имя с путём директорий. Скрипт на мастер сервере сохраняет файл, а в случае необходимости, создаёт переданные директории для пути файла.
Мне необходимо проверить переданный путь с именем файла, что он соответствует разрешенным правилам. Т.е. например, что путь не содержит ссылку на родительский каталог ".." или не является ".php". Я задаю эти правила регулярными выражениями в конфиге и потом проверяю. Так вот, я опасаюсь, что могу пропустить какие-то случаи, которые могут стать проблемой для безопасности, например, представление точки в юникоде или какие-то другие хакерские штучки.
Возможно, кто-то видел подходящие решения для схожей с моей задачей во фреймворках или cms? Тогда посоветуйте, где посмотреть?
Хочу заранее отметить,
1) что realpath() здесь не подходит, т.к. проверка пути происходит до того, как файл записан.
2) А также, что нет возможности не передавать путь файла, т.к. в этом случае необходимо будет переносить много бизнес логики на сторону скриптов мастер сервера. Задача - именно передать путь, который будет проверен и создан, если с ним всё в порядке.
3) Существуют также другие методы проверки, такие как по разрешенным IP и списку разрешенных директорий.
Если коротко, есть веб-сервер (один из многих в кластере), на котором происходит загрузка файла. Этот файл отправляется на мастер сервер, который в дальнейшем синхронизирует изменения файлов с другими веб-серверами.
Чтобы отправить файл, мы отсылаем его содержимое и имя с путём директорий. Скрипт на мастер сервере сохраняет файл, а в случае необходимости, создаёт переданные директории для пути файла.
Мне необходимо проверить переданный путь с именем файла, что он соответствует разрешенным правилам. Т.е. например, что путь не содержит ссылку на родительский каталог ".." или не является ".php". Я задаю эти правила регулярными выражениями в конфиге и потом проверяю. Так вот, я опасаюсь, что могу пропустить какие-то случаи, которые могут стать проблемой для безопасности, например, представление точки в юникоде или какие-то другие хакерские штучки.
Возможно, кто-то видел подходящие решения для схожей с моей задачей во фреймворках или cms? Тогда посоветуйте, где посмотреть?
Хочу заранее отметить,
1) что realpath() здесь не подходит, т.к. проверка пути происходит до того, как файл записан.
2) А также, что нет возможности не передавать путь файла, т.к. в этом случае необходимо будет переносить много бизнес логики на сторону скриптов мастер сервера. Задача - именно передать путь, который будет проверен и создан, если с ним всё в порядке.
3) Существуют также другие методы проверки, такие как по разрешенным IP и списку разрешенных директорий.