Как новичок в C, я хочу знать, каковы основные советы по безопасности, которые должен знать каждый программист на C. Строго ссылаясь на C.Основные ошибки безопасности, которых следует избегать в C
ответ
Думайте, что главная проблема - buffer overflow. Это может случиться с использованием функции fgets или scanf без указания максимального количества прочитанных байтов. Вредоносная строка ввода, превышающая выделенный буфер, может перекрывать обратный адрес в стеке, что приводит к выполнению предоставленного эксплойта.
Тема довольно большая, но для начала вам может понадобиться избежать сбоев сегментации и переполнения буфера.
Ну, это цель, вы должны объяснить, как ее достичь. :) –
Наиболее очевидный: переполнение буфера. Используйте strncpy
вместо strcpy
.
'strncpy()' не является панацеей - он не гарантирует ничейных строк, поэтому его нужно использовать осторожно. –
'strncpy' просто не должен использоваться подавляющим большинством программистов. Если вы не хотите отличить, кто должен его использовать, вы не из тех, кто должен его использовать. :-) –
- 1. Компоненты, которых следует избегать в Delphi
- 2. Ошибки общего программирования для разработчиков Haskell, которых следует избегать?
- 3. Классы, которых следует избегать (код завершен)
- 4. Magic QueryStrings - хорошие шаблоны, которых следует избегать?
- 5. Изменение C++ DLL для поддержки unicode - общие ошибки, которых следует избегать?
- 6. Ловушки, которых следует избегать при написании спецификаций проекта
- 7. Символы, которых следует избегать в автоматически сгенерированных паролях
- 8. Как следует избегать «ошибок в C»?
- 9. Есть ли семена, которых следует избегать при использовании Random?
- 10. Каковы примеры функций/предложений SQL Server Query, которых следует избегать?
- 11. «Плохие» расширения файлов, которых следует избегать на сайте загрузки файлов?
- 12. Следует ли избегать объявления переменных на C++?
- 13. query_posts() следует избегать?
- 14. следует избегать использования retf?
- 15. Следует избегать двусторонних отношений?
- 16. Когда следует избегать memcache?
- 17. Конструкции javascript, которых нужно избегать?
- 18. Зачем следует избегать функции system() в C и C++?
- 19. Почему следует избегать размещения в QEventLoops?
- 20. Какие особенности SystemVerilog следует избегать в синтезе?
- 21. Следует ли избегать Guavas Ordering.usingToString()?
- 22. Объекты RX - их следует избегать?
- 23. Следует избегать импорта подстановочных знаков?
- 24. Производительность DSP, чего следует избегать?
- 25. Когда следует избегать методов расширения?
- 26. Когда следует избегать слабых типов?
- 27. C++ Заголовки и основные ошибки
- 28. Следует избегать последовательных вызовов `errno`?
- 29. Должно возвращаться 0; следует избегать в main()?
- 30. Основные вопросы безопасности ASP.NET
Не могли бы вы пояснить, что вы подразумеваете под * безопасностью *? – Exa
Полный ответ, вероятно, будет до тех пор, пока сама C++-спецификация. –
Это о C или о C++? В любом случае, область охвата довольно широка. – Cubbi