Можно ли прочитать код в php-файле на другом сервере, не выполнив вывод?
Разрешение по умолчанию для файлов на сервере Linux - 644, то есть оно доступно для чтения всем. Я прочитал несколько статей, предлагающих изменить разрешение для конфигурационных файлов на 600. Означает ли это, что у хакера есть способ просмотреть код внутри php-файла, если у него включено разрешение на чтение?
Есть ли способ, которым хакер может использовать разрешение 644 файла?
1 ответ
"Доступно для чтения всем" включает в себя хакеров, которые бродят по вашему серверу, так что да, хакер может прочитать содержимое файла, если получит доступ к вашему серверу. Если хакер даже получит root-права на вашем сервере, разрешения не имеют значения, так как он может читать все файлы.
Если хакер не имеет прямого доступа к вашему серверу, а вместо этого пытается взломать ваш веб-сайт (или другую предоставляемую вами онлайн-службу (PHP)), хакер может получить доступ к файлу, если ваша служба каким-либо образом (ошибочно) предоставляет содержимое файла (например, путем включения некоторого файла, который не должен был быть включен). Предполагая, что служба не работает с правами root, права доступа к файлам также могут помешать службе (и, следовательно, хакеру) читать содержимое.
Например, предположим, что вы хотите посчитать количество скачиваний ваших файлов, вы можете использовать:
$download = $_GET['download'];
updateDownloadCounter($download);
// Send file to user
readfile($download);
Если хакер использует download.php?download=/etc/shadow
пароли ваших серверов (по крайней мере, хэши учетных записей пользователей) отправляются "хакеру" в качестве приятной загрузки. (Хакер кажется слишком лестным для этого очевидного примера:P)
Установка прав доступа к файлу на 600 помогает предотвратить хакеры для чтения содержимого файлов, так как php имеет права root и не может читать содержимое файла.
Обратите внимание, что существует множество других способов получить содержимое ваших файлов, поэтому просто / только установка разрешений недостаточна для обеспечения вашей безопасности.