trigger_error(‘Ошибка запроса к базе данных: ‘.mysql_error(), E_USER_ERROR); -> проблема безопасности?

#php #security

#php #Безопасность

Вопрос:

у меня вопрос относительно этой строки:

 $db_conn = mysql_connect($db_host, $username, $password) or trigger_error('Query failed: ' . mysql_error($db), E_USER_ERROR);
  

я использую этот код для подключения к БД. в документации E_USER_ERROR говорится, что прерывает выполнение скрипта, но я хотел бы знать, представляет ли это угрозу безопасности, показывая некоторую информацию об ошибке / коде, которую пользователи не должны читать.

Спасибо

Ответ №1:

Короче говоря: Да. Никогда не предоставляйте внутренние сообщения об ошибках любому внешнему пользователю. Причина в том, что чем больше информации вы предоставляете, тем легче возможным злоумышленникам найти слабые места вашего приложения, сервера…. С другой стороны, обычные пользователи обычно не интересуются никакими внутренними компонентами, поэтому нет недостатка в том, чтобы просто скрыть их. Тем не менее, вы должны зарегистрировать их.

Ответ №2:

Никогда не сообщайте о внутренней ошибке пользователю. Вы должны включить сообщение об ошибках при разработке с помощью sintax error_reporting(E_ALL); и отключить его при публикации вашего сайта / приложения с помощью error_reporting(0);

Надеюсь, вы найдете это полезным 🙂

Ответ №3:

я хотел бы знать, представляет ли это угрозу безопасности, показывая некоторую информацию об ошибке / коде, которую пользователи не должны читать.

Нет, если вы поступаете правильно и отключаете отчеты об ошибках на рабочих веб-сайтах.

Вот почему использование trigger_error() намного, намного лучше, чем, например die() , — последнее всегда будет показывать сообщение об ошибке, в то время как первое можно заставить замолчать.