19 смертных грехов, угрожающих безопасности программ

19 смертных грехов, угрожающих безопасности программ

Год выхода: 2011
Аннотация
Книга "Замена опасных функций работы со строками" обсуждает важные аспекты безопасности программного обеспечения, связанные с использованием небезопасных функций работы со строками в языке программирования C и C++. Авторы книги, имеющие большой опыт работы в области безопасности программного обеспечения, представляют список типичных проблем, с которыми сталкиваются организации-разработчики, и предлагают решения для их предотвращения. В книге обсуждается замена небезопасных функций, таких как strcpy, strcat и sprintf, их безопасными аналогами, такими как strsafe, Safe CRT, strlcat/strlcpy. Подчеркивается важность обработки конца строки и усечения при работе с новыми функциями, чтобы избежать переполнения буфера. Приводится опыт группы разработчиков Microsoft Office, которые активно заменяли небезопасные функции в своем коде. Также авторы обращают внимание на важность следить за выделением памяти, предотвращением арифметических ошибок, проверкой циклов и доступа к массивам, чтобы избежать выхода за их границы. Рекомендуется использовать строки в стиле C++, переходить к использованию STL-контейнеров вместо статических массивов и внедрять инструменты анализа кода для обнаружения ошибок безопасности. Отрывок также обсуждает дополнительные меры защиты, такие как защита стека и запрет исполнения в стеке и куче, как способы минимизировать эффект переполнения буфера. Важно понимать, что эти меры не являются идеальными и следует внимательно проверять доступ к буферу, применять средства защиты на уровне операционной системы и обрабатывать данные противника безопасным образом. Далее книга описывает проблему внедрения SQL-инъекций в приложения, написанные на различных языках программирования, таких как C#, PHP, Perl/CGI и Java. Приводятся примеры кода, в которых демонстрируется как неправильное использование пользовательских данных может привести к уязвимостям системы. Отмечается необходимость обработки пользовательского ввода, использования других методов безопасной работы с базами данных и проведения тщательного тестирования на уязвимости. В заключении книги рассматриваются методы поиска, исправления и предотвращения уязвимостей, связанных с внедрением SQL и подчеркивается важность обеспечения безопасности программного обеспечения на всех этапах разработки. Авторы предостерегают о возможных рисках и призывают к использованию надежных практик программирования для защиты от атак и компрометации данных. Книга служит ценным ресурсом для разработчиков и специалистов по безопасности, стремящихся улучшить безопасность своих программ.