Я создаю 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
, индексный файл загружает файлы content
, cofnig
и requests
из папки menu/tools/
.
Теперь к проблеме. Сама страница index.php
доступна только для зарегистрированных пользователей, но по соображениям безопасности я бы хотел отключить доступ ко всему в папке menu
любым другим способом, кроме функции включения php.
Чтобы продемонстрировать, что может произойти: если я хочу что-то удалить, я использую index.php?section=tools&delete=5
, а в файле menu/tools/requests.php
я бы проверил, установлено ли $_GET['delete']
, а затем удалил идентификатор 5 из БД. Теперь проблема в том, что, если кто-то знал фактическую структуру, он (а) мог бы получить доступ к файлу requests.php
следующим образом: site.com/admin/menu/tools/requests.php?delete=5
и таким образом взломать сайт.
Есть ли способ предотвратить подобные атаки? Что-то, чтобы запретить доступ к файлам в папке меню, но все же разрешить доступ к ним из моего файла index.php? Htaccess возможно? Я действительно не хочу ставить проверку (если установлен сеанс / cookie) для каждого отдельного файла в папке 'menu', хотя это было бы возможным решением.