|
||||||||||
Сообщение об ошибкеПри использовании системы безопасности PHP имеются две стороны сообщения об ошибках. Стандартная тактика нападения включает профилирование системы для введения в неё несоответствующих данных и проверка вида ошибок и контекста, в котором они возвращаются. Это даёт взломщику системы возможность испробовать информацию о сервере для определения возможных дыр. Например, если взломщик собрал информацию о странице на основе предыдущей отправки формы, он может попытаться переопределить значения или модифицировать их: Ошибки PHP, которые нормально возвращаются, могут помочь разработчику при
отладке скриптов, указывая на такие вещи, как неудачно выполненная функция или файл PHP, в котором была неудача,
и номер строки, в которой возникла ошибка. Эта информация и будет использоваться.
Независимо от метода обработки ошибок, возможность проверки системы на наличие ошибок приведёт к снабжению хакера дополнительной информацией. Например, стиль общей PHP-ошибки указывает систему, на которой запущен PHP. Если хакер просмотрит .html-страницу и захочет проверить её (найти известные утечки в системе), заполнив её неправильными данными, он сможет определить, что система построена с PHP. Ошибка функции может указать, запущена ли на системе конкретная машина БД,
или дать ключ к тому, как web-страница сконструирована или запрограммирована.
Это позволит глубоко внедриться в открытый порт БД или найти специфический bug или утечку в web-странице. Ошибка файловой системы или общая ошибка PHP может указать на то, какие привилегии имеет web-сервер, а также на структуру и организацию файлов на web-сервере. Записанный разработчиком код ошибки может усугубить эту проблему, приведя к лёгкому способу использования ранее "скрытой" информации. Есть три основных способа решения этой проблемы: Одним из способов решения этой проблемы является использование собственного error_reporting() РНР, чтобы помочь вам обезопасить ваш код и скрыть использование переменных, которое может представлять опасность. Тестируя ваш код с помощью E_ALL до публикации, вы сможете быстро обнаружить области, где ваши переменные могут оказаться открытыми для модификации другими способами. Если вы уже готовы опубликовать, используя E_NONE вы отключите возможность проверки вашего кода.
|
||||||||||
|