Безопасные методы кодирования на С++

Я ищу исчерпывающий отчет о безопасных методах кодирования в С++. Поскольку я не нашел такой список, существующий здесь, мы могли бы также сделать это в вики сообщества, для дальнейших ссылок. Я ищу решения проблем безопасности, таких как переполнение и переполнение буфера на стеке и на куче, переполнение и переполнение целых чисел, а также форматирование строковых атак, разыменование нулевых указателей, атаки на кучу/память и т.д.

Примечание. Помимо методов кодирования, заслуживают внимания и защищенные библиотеки, защищающие от подобных атак.

LE: Как предложил MSalters в комментариях, этот вопрос был разделен на два отдельных вопроса: один для С++ и один для C. Также см. Практики безопасного кодирования C.

Ответ 1

Книга Написание безопасного кода очень хорошо объясняет проблемы безопасности и как их избежать. Книга не работает некоторое время, но большинство затронутых тем все еще актуальны.

Ответ 2

Herb Sutter "Исключительные С++" и "Стандарты кодирования С++". Бесценный.

Marshall Cline С++ faq. Расскажу вам все об общих ловушках. Бесплатный онлайн.

Ответ 3

Позвольте мне начать с него

  • Избегайте динамически распределенных памяти с помощью malloc
  • (родственный) использование фиксированный размер массив, когда это когда-либо возможно, или infact в С++, избегайте массивов стилей C, когда они практичны.
  • избегать использования (void *)

Ответ 4

Я нашел эту книгу очень полезной Защищенная программная поваренная книга для C и С++: Рецепты для криптографии, аутентификации, проверки ввода и многое другое

В нем есть много примеров как для Linux (posix), так и для Windows в отличие от предыдущего Написание защищенного кода, второго издания.

Ответ 6

Стандарт кодирования SEI CERT С++ специально разработан для решения всех проблем безопасности. CERT означает команду Computer Emergency Response Team, которая является экспертной группой, которая занимается инцидентами компьютерной безопасности.