Я создаю CMS, а главная страница ( index.php
) создается из большого количества небольших файлов в каталоге CMS. Например, структура может быть такой:
index.php menu/admin/content.php config.php requests.php menu/tools/content.php config.php requests.php menu/users/content.php config.php requests.php
Когда я обращаюсь к index.php
в корневом каталоге, я получаю другой результат, основанный на параметрах $_GET
. Например, когда я обращаюсь к index.php?section=tools
cofnig
index.php?section=tools
, индексный файл загружает content
, cofnig
и requests
файлы из menu/tools/
folder.
Теперь к проблеме. Сама страница index.php
доступна только для зарегистрированных пользователей, но по соображениям безопасности я хотел бы отключить все в папке menu
из-за доступа любым другим способом, чем с помощью функции включения php.
Чтобы продемонстрировать, что может случиться: если я хочу что-то удалить, я использую index.php?section=tools&delete=5
, а в файле menu/tools/requests.php
я бы установил, установлен ли $_GET['delete']
а затем удалите идентификатор 5 из БД. Теперь проблема в том, что, если кто-то знал фактическую структуру, он мог получить доступ к файлу site.com/admin/menu/tools/requests.php?delete=5
следующим образом: site.com/admin/menu/tools/requests.php?delete=5
и взломать сайт, который путь.
Есть ли способ предотвратить подобные атаки? Что-то, чтобы запретить доступ к файлам в папке меню, но все же позволить им получить доступ из моего файла index.php? Может быть? Мне действительно не хочется помещать чек (если session / cookie установлен) в каждый отдельный файл в папке «menu», хотя это было бы возможным решением.