как узнать, существует ли файл в текущем дереве каталогов

Я хочу проверить, находится ли путь к файлу в текущем дереве каталогов.

Предположим, что параметр задан как js/script.js . Мой рабочий каталог (WD) – это /home/user1/public_html/site

Теперь для текущего WD, если кто-то поставляет js/script.js я могу просто проверить его, добавив к WD. Он работает для такого нормального пути. Но если кто-то (может быть атакующим) хочет пройти ../../../../etc/password это будет проблемой.

Я знаю, что его можно подавить, удалив символы .. используя некоторый RegEx. И это решит это наверняка. Но я хочу знать, как я могу создать какой-то chroot ed environment sot, который передается любому пути / в / скрипт, который будет искать в WD?

Изменить: мне известно о http://php.net/chroot . это требует, чтобы ваше приложение запускалось с привилегиями root.

http://php.net/manual/en/function.realpath.php

 $chroot = '/var/www/site/userdata/'; $basefolder = '/var/www/site/userdata/mine/'; $param = '../../../../etc/password'; $fullpath = realpath($basefolder . $param); if (strpos($fullpath, $chroot) !== 0) { // GOTCHA }