Где в Интернете может мы изучать Безопасное Программирование в c/c ++ [закрытый]

8
задан bits 19 July 2010 в 17:46
поделиться

4 ответа

Безопасное программирование включает в себя методы, которые снижают вероятность неправильного использования самими разработчиками кода.

Вот мои два цента - Избегайте использования указателей там, где это возможно. На мой взгляд, указатель следует использовать только тогда, когда значение NULL имеет особое значение. Этот принцип распространяется на несколько идиом кодирования

  • Использование векторов STL вместо массивов
  • Использование передачи по ссылке / передаче по значению при передаче базовых типов в функция
  • Использовать передачу по константной ссылке при передаче пользовательских типов в функция. Это так же эффективно, как передача указателя.

Суть в том, что если есть указатели, есть большая вероятность, что они будут неправильно использованы кем-то, кто в конечном итоге унаследует код.

2
ответ дан 5 December 2019 в 11:22
поделиться

Я брошу парочку и сделаю эту вики сообщества:

  1. Никогда, никогда, никогда не используйте gets .

  2. Не предполагайте, что строка завершается нулем, если вы действительно не знаете, что это так.

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

4
ответ дан 5 December 2019 в 11:22
поделиться
  1. Утверждения, утверждения, утверждения. Если есть даже теоретическая возможность, что что-то может быть не так, продолжайте и утверждайте, что это так. Если что-то не совсем так, как вы этого ожидали, вы хотите, чтобы ваша программа умерла немедленно и эффектно. Убедитесь, что ваши утверждения не будут оптимизированы.

  2. Будьте очень осторожны с буферами. Есть некоторые функции (например, get), которые записывают в буфер, не зная, насколько он большой. Не используйте эти функции. Всегда проверяйте размер буфера именно там, где он вам нужен, а не полагайтесь на предварительно вычисленные значения.

  3. Всегда проверяйте коды возврата. Если вы не можете сделать ничего значимого при ошибке (например, malloc), тогда подтвердите успех или, лучше, напишите функцию-оболочку, которая утверждает успех, чтобы она не могла вернуть значение ошибки и никогда не использовать оригинал. Чтобы быть экстра-параноидальным, пусть ваш компилятор выдает предупреждение, если вы неявно игнорируете возвращаемое значение.

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

  5. «Преждевременная оптимизация - корень всех зол». Сначала сделай это правильно. Даже не думайте о том, чтобы сделать это быстрее, если: а) вам это абсолютно необходимо; б) вы профилировали код и точно не знаете, в чем заключаются ваши узкие места.

  6. Попросите кого-нибудь проверить ваш код.

Это лишь некоторые отправные точки. Написать безопасный код сложно.

3
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: