Не все ли файлы в общественном мнении плохо?
Несомненно, такие вещи, как /system/application/config/database.php, не должны быть общедоступными!
Разработчики CodeIgniter, EllisLabs, создали систему таким образом для удобства использования. Это означает, что люди, желающие попробовать фреймворк, не должны возиться с любыми настройками разрешений на своем сервере.
Конечно, на производственном сервере вы абсолютно правы, поэтому ваши PHP-файлы в общедоступной папке HTML не являются хорошей идеей.
Лучший способ организовать ваши папки:
Единственное другое изменение, которое нужно сделать здесь, это изменить строку 26 index.php следующим образом:
$system_folder = "../../code_igniter/system-folder";
Вы можете добавить следующее правило в ваш .htaccess файл для дальнейшей защиты от просмотра системных и прикладных каталогов (отправляет 403 Forbidden ошибку):
# Protect application and system files from being viewed RewriteRule ^(application|system) - [F,L]
С этой структурой:
/application /system /public index.php
Вы можете изменить в public/index.php
эти два параметра, и все готово
$application_folder = '../application'; $system_path = '../system';
Ответ Джона Уинстенли прекрасен, также не забудьте защитить папку для загрузки файлов, если она у вас есть. Я сделал это, также перемещая его за пределы общедоступного корня и получая изображения с использованием кода ниже:
<?php // $details = getimagesize($_GET["path"] . '/' . $_GET["image"]); $details = getimagesize($_GET["path"] . strip_tags($_GET["image"])); header ('Content-Type: ' . $details['mime']); readfile($_GET["path"] . strip_tags($_GET["image"])); exit; ?>
Доступ к файлам внутри / system / из браузера не будет раскрывать какую-либо конфиденциальную информацию, потому что PHP будет разбираться и ничего не выводится из этих файлов (системные файлы CI могут даже проверять, была ли определена переменная, которая указывает, что файл wasn Прямой доступ к нему.
Тем не менее, вы должны, вероятно, установить всю свою системную папку над веб-корнем в любом случае.
Вы всегда можете разместить системный каталог вне общедоступного каталога. Не забудьте обновить пути внутри фронтального контроллера (index.php).