#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()
, — последнее всегда будет показывать сообщение об ошибке, в то время как первое можно заставить замолчать.