Показать сообщение отдельно
  #1 (permalink)  
Старый 14.02.2015, 18:52
Аспирант
Отправить личное сообщение для bartonom Посмотреть профиль Найти все сообщения от bartonom
 
Регистрация: 05.05.2011
Сообщений: 48

Подключение к БД, PDO и обработка исключения
Общепринятая рекомендация на случай обработки ошибок, использовать try..catch
try {
    $dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    die('Подключение не удалось: ' . $e->getMessage());
}

Прочитал два мнения об обработке исключений в контексте такого подключения к БД:
Первое, что использовать try..catch нужно только тогда, когда вы собираетесь ОБРАБОТАТЬ ошибку - то есть, совершить какое-то действие, связанное с ФАКТОМ ошибки - откатить транзакцию, например. Для того же, чтобы просто выдать сообщение об ошибке, try..catch использовать не нужно - PHP прекрасно справится сам
Второе, ... в случае ошибки при подключении будет выброшено исключение PDOException. Если ваше приложение не перехватывает исключение PDO конструктора, движок zend выполнит стандартные операции для завершения работы скрипта и вывода обратной трассировки. В этой трассировке будет содержаться детальная информация о соединении с базой данных, включая имя пользователя и пароль.

Вопрос в следующем:
1. Означает ли это, что в связи с возможным перехватом конфиденциальной информации, все-таки стоит делать перехват исключения (даже если нет особых причин для обработки исключения), так как светить пароль в ответе обратной трассировки, конечно нет желания?

PS: Нет, к сожалению понимания, о чем речь – когда упоминается об опасности вывода в обратной трассировке пароля, о том, куда идет вывод обратной трассировки, кто и каким образом может там покопаться?
По смутным ощущениям, трассировка - это тема zend framework, но не очень хотелось бы на этом этапе углубляться, да и может это и не то?
Ответить с цитированием