У меня есть вопрос.
Я хочу отключить прямой доступ к моим включенным файлам. (пример header.tpl.php, footer.tpl.php, confic.inc.php, db-connect.inc.php).
но сначала позвольте мне объяснить, что я хочу, я хочу, чтобы все разрешили доступ к моим включенным файлам (index.php) и отключили файлы с заголовком 404 для прямого доступа.
теперь я нашел некоторый классный фрагмент php и изменил его (включая заголовок 404 и 404)
в моем index.php этот код:
define('MY_APP',true);
в моем файле шаблонов находится этот код:
if(!defined('MY_APP')) { header('HTTP/1.1 404 Not Found'); include('./../error/404.php'); die; }
вif(!defined('MY_APP')) { header('HTTP/1.1 404 Not Found'); include('./../error/404.php'); die; }
вы видите какие-либо проблемы безопасности или другие проблемы с этим кодом?
наилучшие пожелания bernte
вы видите какие-либо проблемы безопасности или другие проблемы с этим кодом?
Если ваш сервер повторно настроен так, чтобы .php больше не выполнялся, их исходный код будет доступен для просмотра.
Но рядом с этим ваш подход – довольно распространенный способ сделать это. Однако error/404.php
может содержать header('HTTP/1.1 404 Not Found');
, поэтому вам не нужно повторять его для каждого файла. То же самое для die;
заявление.
В каждом файле библиотеки / шаблона и т. Д .:
require('../error/include_file.php');
В include_file.php
:
if(!defined('MY_APP')) { header('HTTP/1.1 404 Not Found'); include('404.php'); die; }
вif(!defined('MY_APP')) { header('HTTP/1.1 404 Not Found'); include('404.php'); die; }
Возможно, лучше для вашего дизайна. Не повторяйтесь так много.
Почему бы просто не перетащить его выше папки public_html или того, что вы используете в качестве папки html по умолчанию и включить с помощью ../../. Тогда он будет доступен для скриптов, но публика получит файл 404 / default по умолчанию, который не найден. Я делаю это с конфигурационными файлами, в которых хранятся пароли, и поэтому никто не может публиковать их.
if (basename($_SERVER['SCRIPT_FILENAME']) == basename(__FILE__)) { //header("Location: index.php"); exit("NOT ALLOWED"); }