Читать «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 – сообщение, выбранное противником, которое должно начинаться со специальной комбинации битов, но заканчиваться может любыми битами». {Прим. перев.)