Как сделать так, чтобы никто не получал доступ к файлам из корня моего документа на моем веб-сервере? - PullRequest
0 голосов
/ 24 апреля 2019

В настоящее время я работаю над веб-сервером в C. Я хочу убедиться, что невозможно получить доступ к файлам, которые находятся за пределами корня моего документа, и мне нужно написать функцию, которая проверяет файл запроса / путь к этому файлу (например /index.html) и следит за тем, чтобы не было возможности выйти из корня моего документа (например, /../ заставил бы его выйти из корня документа).Я думал о том, чтобы просто проверить ../ и удалить это, но тогда кто-нибудь может запросить .... //, что будет ../ снова, если мы удалим ../ из него.Есть какой-нибудь умный способ сделать это, о котором я не думаю?

1 Ответ

2 голосов
/ 24 апреля 2019

Использовать realpath :

realpath - вернуть канонизированный абсолютный путь

Будет возвращен абсолютный путь со всеми символическими ссылками, всеми ./ и все /../ решены.Сохраните свой «корень документа» после разрешения с помощью realpath тоже.После этого вы можете просто memcmp или strcmp разрешить путь к корню документа с разрешенным путем к пути, который вы хотите проверить ..

...