Я создаю простой файловый менеджер, который сканирует каталог и перечисляет файлы и каталоги в нем, включая повышение уровня на три точки ../
.мой "корневой" каталог - E:/wamp/www
, и я не хочу, чтобы он разрешал мне доступ к родительскому каталогу.
Я использую следующее регулярное выражение:
(^E\:\/wamp\/www\/)(\.\.\/$|\.\.\/.*?(\.\.\/)+$)|(^E\:\/wamp\/www\/([^\/]+\/)+)(\.\.\/.*?(\.\.\/)+)
по порядкудля предотвращения следующих ситуаций:
- E: / wamp / www /../
- E: / wamp / www / dir /../../
- E: / wamp / www / dir / subdir /../../../
Но я обнаружил, что также возможно сделать что-то такое:
- E: / wamp / www / dir /../ dir /../../
и т. Д.
Как можно предотвратить такие ситуации и ограничитьэто будет только E:/wamp/www
с использованием регулярных выражений, когда это происходит?