Новые книги

IoT – инструмент, который поможет бизнесу вырваться вперед. Мачей Кранц рассказывает об инновационной технологии и особенностях внедрения ее в разные отрасли. Эта книга научит вас использовать IoT, предсказывать грядущие перемены и разрабатывать уникальные стратегии, способные обеспечить вашему бизнесу и карьере процветание.
Слово криптография означает тайнопись.

Российская криптография имеет многовековую историю, начинающуюся с указов Петра I о «черных кабинетах». До середины 80-х годов XX века криптография в России использовалась только для военных, дипломатических и правительственных линий связи и была строго засекречена. Даже употребление слов «криптография», «шифры», «ключи к шифрам» в открытых публикациях было недопустимо. Но в мире быстро назревала потребность в гражданской криптографии, стремительно развивались информационные технологии, стали появляться компьютерные сети, Интернет, денежные электронные расчеты. Для этого требовались надежные и общедоступные криптографические методы защиты информации.

Была ли Россия готова к появлению гражданской криптографии? И да, и нет.

Да, потому что еще с советских времен в России существовала прекрасная криптографическая школа и высококлассные специалисты-криптографы, которые долгое время на равных конкурировали с американским Агентством Национальной Безопасности и обеспечивали гарантированную защиту военных, дипломатических и правительственных линий связи.

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

В 1992 году случился кризис: поток фальшивых авизо захлестнул Центральный Банк России и грозил обрушить всю финансовую систему. Потребовалась срочная помощь криптографов: в кратчайшие сроки создать, наладить и запустить в эксплуатацию систему криптографической защиты телеграфных и почтовых авизо в такой огромной структуре, как ЦБ РФ.

Эта задача была выполнена за три месяца – неимоверно короткий срок.

В России появился первый реальный пример гражданской криптографии.

О том, что представляла из себя советская криптографическая школа, о ее специалистах и начальниках, о царившей тогда в стране атмосфере, о том, как была создана система защиты для Центрального Банка России, и, наконец, о том, почему же в России так трудно пробивает себе дорогу гражданская криптография – в этой книге.

Сообщение об Ошибке

Учебник РНР
НазадГлава 4. Безопасность Вперёд

Сообщение об ошибке

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

Стандартная тактика нападения включает профилирование системы для введения в неё несоответствующих данных и проверка вида ошибок и контекста, в котором они возвращаются. Это даёт взломщику системы возможность испробовать информацию о сервере для определения возможных дыр. Например, если взломщик собрал информацию о странице на основе предыдущей отправки формы, он может попытаться переопределить значения или модифицировать их:

Пример 4-11. Атака на переменные HTML-страницей
<form method="post" action="attacktarget?username=badfoo&password=badfoo">
<input type="hidden" name="username" value="badfoo">
<input type="hidden" name="password" value="badfoo">
</form>

Ошибки PHP, которые нормально возвращаются, могут помочь разработчику при отладке скриптов, указывая на такие вещи, как неудачно выполненная функция или файл PHP, в котором была неудача, и номер строки, в которой возникла ошибка. Эта информация и будет использоваться.
Для разработчика php привычно использовать show_source(), highlight_string() или highlight_file() как средство отладки, но на действующем сайте это может обнаружить скрытые переменные, непроверяемый синтаксис и другую опасную информацию. Особенно опасно запускать код из известных источников со встроенными обработчиками отладки или использовать обычную технику отладки. Если хакер сможет определить, какую технику вы используете, он может попытаться грубо форсировать страницу, отправляя разные обычные строки отладки:

Пример 4-12. Использование обычных переменных отладки
<form method="post" action="attacktarget?errors=Y&amp;showerrors=1"&debug=1">
<input type="hidden" name="errors" value="Y">
<input type="hidden" name="showerrors" value="1">
<input type="hidden" name="debug" value="1">
</form>

Независимо от метода обработки ошибок, возможность проверки системы на наличие ошибок приведёт к снабжению хакера дополнительной информацией.

Например, стиль общей PHP-ошибки указывает систему, на которой запущен PHP. Если хакер просмотрит .html-страницу и захочет проверить её (найти известные утечки в системе), заполнив её неправильными данными, он сможет определить, что система построена с PHP.

Ошибка функции может указать, запущена ли на системе конкретная машина БД, или дать ключ к тому, как web-страница сконструирована или запрограммирована. Это позволит глубоко внедриться в открытый порт БД или найти специфический bug или утечку в web-странице.
Вводя разные блоки неверных данных, например, хакер может определить порядок аутентификации в скрипте (по номерам строк с ошибками), а также попробовать использовать то, что может иметься в разных частях скрипта.

Ошибка файловой системы или общая ошибка PHP может указать на то, какие привилегии имеет web-сервер, а также на структуру и организацию файлов на web-сервере. Записанный разработчиком код ошибки может усугубить эту проблему, приведя к лёгкому способу использования ранее "скрытой" информации.

Есть три основных способа решения этой проблемы:

Первый - структурировать все функции и попытаться компенсировать объём ошибок.
Второй - полностью отключить в работающем коде сообщения об ошибках.
Третий - использовать специальные функции PHP по обработке ошибок для создания вашего собственного обработчика ошибок.

В зависимости от используемой вами политики безопасности, вы может применить все три способа в вашей ситуации.

Одним из способов решения этой проблемы является использование собственного error_reporting() РНР, чтобы помочь вам обезопасить ваш код и скрыть использование переменных, которое может представлять опасность. Тестируя ваш код с помощью E_ALL до публикации, вы сможете быстро обнаружить области, где ваши переменные могут оказаться открытыми для модификации другими способами. Если вы уже готовы опубликовать, используя E_NONE вы отключите возможность проверки вашего кода.

Пример 4-13. Обнаружение опасных переменных с помощью E_ALL
<?php
if ($username) {  // не инициализируется или проверяется перед использованием
    $good_login = 1;
}
if ($good_login == 1) { // Если предыдущий тест терпит неудачу, не инициализируется
			//или проверяется перед использованием
    fpassthru ("/highly/sensitive/data/index.html");
}
?>

Назад Оглавление Вперёд
Безопасность БД ВверхИспользование Register_Globals