Нужно ли прятать абсолютные пути к файлам в php?

172
16 июля 2018, 16:40

Обычно различного рода экзепшенами стараются закрыть внутренние ошибки. Приведу примитивный пример, чтобы понятнее была суть вопроса.

$rand = rand(0, 1);
if ($rand == 1) $arr = ['a', 'b', 'c'];
printElements($arr);
function printElements(array $array) {
    foreach ($array as $value) echo "$value<br/>";
}

В таком случае, если в $rand окажется 1, скрипт выполнится без ошибок. Если же 0, пользователь в браузере увидит что-то в духе

Fatal error: Uncaught TypeError: Argument 1 passed to printElements() must be of the type array, null given, called in /path/to/my/project/dir/index.php on line 5 and defined in /path/to/my/project/dir/index.php:12 Stack trace: #0 /path/to/my/project/dir/index.php(5): printElements(NULL) #1 {main} thrown in /path/to/my/project/dir/index.php on line 12.

Теперь он знает абсолютный путь к файлу, его название, название класса (если есть) и метода, в котором возникло исключение.

Отлавливаются такие ошибки при помощи нормального кода try...catch, это ясно.

Собственно, вопрос. Нужно ли усиленно отлавливать ошибки, выдающие абсолютные пути к файлам? Чем это может грозить в плане безопасности? Насколько это критично и как злоумышленники могут этим воспользоваться?

Answer 1

А зачем на проде исключения показывать?

Вы должны их ловить к примеру через функцию set_exception_handler:

set_exception_handler(function($exception) {
  echo "Текст ошибки: " , $exception->getMessage(), "\n";
});

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

READ ALSO
Не валидный JSON, PHP

Не валидный JSON, PHP

Получаю вот такой JSON:

172
Логика работы с приложениями facebook

Логика работы с приложениями facebook

Настраиваю приложение которое будет получать посты со стены публичной страницы и постить на сайте, столкнулся с некоторыми непонятностями,...

179
Как в объект php положить функцию?

Как в объект php положить функцию?

В документации могу найти только классы, конструкторы

149