Читать «19 смертных грехов, угрожающих безопасности программ» онлайн - страница 182
Майкл Ховард
□ Не доверяйте информации, полученной от DNS–сервера, она ненадежна!
□ Об организации защиты по протоколу IPSec тех систем, на которых работает ваше приложение.
Грех 16.
Гонки
□ Пишите код, в котором нет побочных эффектов.
□ Будьте очень внимательны при написании обработчиков сигналов.
□ Не модифицируйте глобальные ресурсы, не захватив предварительно замок.
□ О том, чтобы создавать временные файлы в области, выделенной конкретному пользователю, а не в области, доступной всем для записи.
Грех 17.
Неаутентифицированный обмен ключами
□ Уясните, что обмен ключами сам по себе часто не является безопасной процедурой. Необходимо также аутентифицировать остальных участников.
□ Применяйте готовые решения для инициализации сеанса, например SSL/ TLS.
□ Убедитесь, что вы разобрались во всех деталях процедуры строгой аутентификации каждой стороны.
□ О том, чтобы обратиться к профессиональному криптографу, если вы настаиваете на применении нестандартных решений.
Грех 18.
Случайные числа криптографического качества
□ По возможности пользуйтесь криптографическим генератором псевдослучайных чисел (CRNG).
□ Убедитесь, что затравка любого криптографического генератора содержит по меньшей мере 64, а лучше 128 битов энропии.
□ Не пользуйтесь некриптографическими генераторами псевдослучайных чисел (некриптографические PRNG).
□ О том, чтобы в ситуациях, требующих повышенной безопасности, применять аппаратные генераторы псевдослучайных чисел.
Грех 19.
Неудобный интерфейс
□ Оцените, чего хочет пользователь в плане безопасности, и снабдите его информацией, необходимой для работы.
□ По возможности делайте конфигурацию по умолчанию безопасной.
□ Выводите простые и понятные сообщения, но предусматривайте прогрессивное раскрытие информации для более опытных пользователей и администраторов.
□ Сообщения об угрозах безопасности должны предлагать какие–то действия.
□ Избегайте заполнять огромные диалоговые окна техническими подробностями. Ни один пользователь не станет это читать.
□ Не показывайте пользователю дорогу к самоубийству, упрятывайте подальше параметры, которые могут оказаться опасными!
□ Об избирательном ослаблении политики безопасности, но ясно и недвусмысленно объясняйте пользователю, к каким последствиям ведут его действия.
Примечания
1
Перечень технологий доступа к базам данных, доступных из программ на Perl, см. на странице http://search.cpan.org/modlist/Database_Interfaces.
2
Смысл атаки в следущем: «зная свертку и длину некоторого неизвестного сообщения М, можно найти свертку другого сообщения N=M | Z (символ | обозначает конкатенацию), где Z – сообщение, выбранное противником, которое должно начинаться со специальной комбинации битов, но заканчиваться может любыми битами».