Как заставить Apache ограничить доступ к файлу кроме внутренних перенаправлений
В настоящее время я занимаюсь разработкой модуля Apache и после анализа данных POST из запроса на другую страницу я делаю внутреннее перенаправление на страницу PHP, которое выполняет некоторые последние операции и выводит мета-тег HTML-обновления. Это в свою очередь заставляет браузер обновляться, запрашивая первую страницу.
Проблема в том, что я не хочу, чтобы явные внешние запросы могли иметь доступ к этой странице, но пусть модуль успешно выполняет внутреннее перенаправление.
Есть ли способ, которым я могу сделать это? Я пытался с помощью:
<Directory /var/www/cc_jnlp/php/>
<Files session_init.php>
Order allow,deny
Deny from all
</Files>
</Directory>
... но это просто блокирует все запросы, независимо от того, было ли это внутренним перенаправлением или нет.
2 ответа
Хорошим подходом было бы отправить что-то с запросом, которое идентифицировало бы его как законное. Мой первый подход состоял в том, чтобы генерировать большое случайное число в начале работы сервера и передавать его вместе с данными. Модуль идентифицирует все запросы к этой странице и отклоняет те, которые не включают этот конкретный аргумент запроса. Проблема заключалась в том, что это было восприимчиво к грубому обращению, и единственный способ противостоять этому - увеличить размер ключа.
Мое окончательное решение будет использовать систему Apache Notes для передачи данных, и, предполагая, что только сам сервер Apache может манипулировать этими данными, мы можем безопасно отклонить все запросы, которые не включают их.
Попробуйте использовать следующую конфигурацию:
<Directory /var/www/cc_jnlp/php/>
<Files session_init.php>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Files>
</Directory>