Какие файлы php безопасны? - PullRequest
       4

Какие файлы php безопасны?

0 голосов
/ 07 августа 2009

Например, используя CodeIgniter, и не имеет дело с .php файлами. Доступны ли для чтения какие-либо файлы .php в структуре каталогов? Если нет, то почему? Почему я не могу перейти к config.php в моем каталоге CI? Это просто права доступа к файлу Unix?

Спасибо.

Ответы [ 4 ]

1 голос
/ 08 августа 2009

Чтобы ответить на ваш вопрос о том, почему вы не можете перейти к файлу config.php в CodeIgniter, это не связано с разрешениями Unix и не защищает его .htaccess.

Все PHP-файлы CodeIgniter имеют строку вверху файла, которая проверяет постоянную «BASEPATH». Константа устанавливается только при прохождении через фреймворк, поэтому при попытке доступа к файлу без прохождения фреймворка «BASEPATH» не будет установлен, и сценарий завершится.

Это переносимый способ защиты файлов CodeIgniter, поскольку не все используют Apache (файлы .htaccess).

1 голос
/ 08 августа 2009

Как правило, файлы типа config.php не имеют вывода. Поэтому они могут быть доступны через браузер, но пользователь ничего не увидит.

Пользователи никогда не видят исходный код ваших .php файлов, если вас это беспокоит. Ваш веб-сервер будет передавать все файлы .php через процессор PHP; только вывод , сгенерированный вашими .php файлами, отправляется пользователю.

Если config.php находится в том же каталоге, что и другие ваши .php файлы (и обычно это так), тогда нет никаких разрешений для файлов Unix или .htaccess происходит. Это просто файл, который не выводит.

1 голос
/ 07 августа 2009

Я собираюсь сделать это с точки зрения «браузера». Если вы хотите увидеть точку зрения каталога, посмотрите ответ зомбата.


В частности, в CodeIgniter, они, вероятно, создали файл .htaccess, который направляет все запросы в один скрипт, чтобы они могли обрабатывать его в одном скрипте, а не в двух дюжинах скриптов.

Поскольку PHP является языком программирования «на стороне сервера», никакая информация в файлах никогда не отправляется клиенту. Это позволяет использовать любой метод для создания нужной HTML-страницы, потому что клиент никогда не увидит код. Это удваивается как защитное устройство.

В большинстве ситуаций с PHP разработчики собирают библиотеки и классы в папку над Document_Root (где начинается веб-сайт), а затем просто помещают файлы, которые запускают эти классы. Это позволяет им быть абсолютно уверенными в том, что у человека нет никакой возможности узнать структуру своего документа и использовать эту информацию для загрузки файлов, которые могут дать им информацию о том, как взломать систему.

Этот метод также позволяет людям не заботиться о том, на каком языке работает сервер. Все веб-страницы созданы в формате HTML, поэтому все, что нужно серверу, - это файл HTML. Используют ли они Perl, Python, PHP или другой язык, полностью зависит от разработчиков.

0 голосов
/ 07 августа 2009

Файлы PHP в системе linux / unix следуют тем же правилам доступа к файлам, что и все остальное. Если вы не можете найти файл config.php, то да, пользователь, вошедший в систему, не имеет соответствующих прав доступа к файлу.

Как правило, вы хотите, чтобы ваши разрешения для проекта PHP были настроены таким образом, чтобы пользовательский интерфейс, под которым работает ваш веб-сервер, имел соответствующие разрешения для чтения и выполнения файлов в вашей веб-структуре.

Для себя я обычно настраиваю группу webdev в своих системах LAMP и помещаю пользователя apache в эту группу. Я правильно установил все разрешения групп для файловой структуры PHP, чтобы Apache мог делать то, что ему нужно. Таким образом, пользователь может владеть всеми своими собственными веб-файлами, а группа webdev может использоваться для управления любым другим доступом к структуре. Это облегчает беспокойство многопользовательских систем, когда кто-то входит и читает файл конфигурации, чтобы получить, скажем, пароль вашей базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...