На нашем сайте вы можете читать онлайн «19 смертных грехов, угрожающих безопасности программ». Эта электронная книга доступна бесплатно и представляет собой целую полную версию без сокращений. Кроме того, доступна возможность слушать аудиокнигу, скачать её через торрент в формате fb2 или ознакомиться с кратким содержанием. Жанр книги — Зарубежная литература, Зарубежная компьютерная литература. Кроме того, ниже доступно описание произведения, предисловие и отзывы читателей. Регулярные обновления библиотеки и улучшения функционала делают наше сообщество идеальным местом для любителей книг.
19 смертных грехов, угрожающих безопасности программ

Автор
Дата выхода
29 июля 2011
Краткое содержание книги 19 смертных грехов, угрожающих безопасности программ, аннотация автора и описание
Прежде чем читать книгу целиком, ознакомьтесь с предисловием, аннотацией, описанием или кратким содержанием к произведению 19 смертных грехов, угрожающих безопасности программ. Предисловие указано в том виде, в котором его написал автор (Майкл Ховард) в своем труде. Если нужная информация отсутствует, оставьте комментарий, и мы постараемся найти её для вас. Обратите внимание: Читатели могут делиться своими отзывами и обсуждениями, что поможет вам глубже понять книгу. Не забудьте и вы оставить свое впечатие о книге в комментариях внизу страницы.
Описание книги
Эта книга необходима всем разработчикам программного обеспечения, независимо от платформы, языка или вида приложений. В ней рассмотрены 19 грехов, угрожающих безопасности программ, и показано, как от них избавиться. Рассмотрены уязвимости на языках C/C++, C#, Java, Visual Basic, Visual Basic.NET, Perl, Python в операционных системах Windows, Unix, Linux, Mac OS, Novell Netware. Авторы издания, Майкл Ховард и Дэвид Лебланк, обучают программистов, как писать безопасный код в компании Microsoft. На различных примерах продемонстрированы как сами ошибки, так и способы их исправления и защиты от них. Если вы программист, то вам просто необходимо прочесть эту книгу.
19 смертных грехов, угрожающих безопасности программ читать онлайн полную книгу - весь текст целиком бесплатно
Перед вами текст книги, разбитый на страницы для удобства чтения. Благодаря системе сохранения последней прочитанной страницы, вы можете бесплатно читать онлайн книгу 19 смертных грехов, угрожающих безопасности программ без необходимости искать место, на котором остановились. А еще, у нас можно настроить шрифт и фон для комфортного чтения. Наслаждайтесь любимыми книгами в любое время и в любом месте.
Текст книги
Недавно Matthew «shok» Conover и Oded Horovitz подготовили очень ясную презентацию на эту тему под названием «Re–liable Windows Heap Exploits» («Надежный эксплойт переполнения кучи в Win–dows»), которую можно найти на странице http://cansecwest.com/csw04/csw04–Oded+Connover.ppt. Даже если сам менеджер кучи не поддается взломщику, в соседних участках памяти могут находиться указатели на функции или на переменные, в которые записывается информация. Когда–то эксплуатация переполнений кучи считалась экзотическим и трудным делом, теперь же это одна из самых распространенных атакуемых ошибок.
Греховность C/C++
В программах на языках C/C++ есть масса способов переполнить буфер. Вот строки, породившие finger–червя Морриса:
char buf[20] ;
gets (buf) ;
Не существует никакого способа вызвать gets для чтения из стандартного ввода без риска переполнить буфер. Используйте вместо этого fgets.
char buf[20];
char prefix[] = "http://";
strcpy(buf, prefix);
strncat(buf, path, sizeof(buf));
Что здесь не так? Проблема в неудачном интерфейсе функции strncat. Ей нужно указать, сколько символов свободно в буфере, а не общую длину буфера.
char buf[MAX_PATH];
sprintf(buf, "%s – %d\n", path, errno);
Если не считать нескольких граничных случаев, функцию sprintf почти невозможно использовать безопасно. Для Microsoft Windows было выпущено извещение о критической ошибке, связанной с применением sprintf для отладочного протоколирования. Подробности см. в бюллетене MS04–011 (точная ссылка приведена в разделе «Другие ресурсы»).
А вот еще пример:
char buf [ 32] ;
strncpy(buf, data, strlen(data));
Что неверно? В последнем аргументе передана длина входного буфера, а не размер целевого буфера!
Еще один способ столкнуться с проблемой – по ошибке считать байты вместо символов. Если вы работаете с кодировкой ASCII, то между ними нет разницы, но в кодировке Unicode один символ представляется двумя байтами.






