Целевая аудитория данной книги — разработчики программного обеспечения, что неудивительно, так как Майкл Ховард и Дэвид Лебланк являются авторами нашумевшей книги издательства Microsoft Press «Защищенный код». Кроме того, авторы активно участвовали в Windows Security Push — инициативы по укреплению защиты продуктов Microsoft. Однако они не останавливаются на языках и средствах разработки, популярных на платформе Windows, но и затрагивают специфику разработки на С/С++ и Perl в UNIX-системах. Спектр операционных систем, уязвимости которых освещаются, также разнообразен: Windows, коммерческие UNIX, Linux, Mac OS X и Novell Netware.
Книга рассматривает типы ошибок (грехов — в терминологии авторов) в программном коде, которые потенциально можно эксплуатировать как уязвимости в таких языках как: C/C++, C#, Java, Visual Basic, Visual Basic .Net, Perl и Python. Причем, по каждому типу грехов (ошибок) рассматриваются следующие аспекты:
-
В чем состоит грех
-
Подверженные греху языки
-
Как происходит грехопадение
-
Греховность С/С++
-
Родственные грехи
-
Где искать ошибку
-
Выявление ошибки на этапе анализа кода
-
Примеры ошибок из реальной жизни (CVE-…,CAN-…)
-
Искупление греха (исправление ошибки)
-
Дополнительные защитные меры
Особенное внимание уделено небезопасным системным и библиотечным вызовам каждого из указанных выше языков и операционных систем.
Web-уязвимости рассматриваются в контексте SQL-инъекций и кросс-сайтовых сценариев. Применительно к Web-серверу IIS делается обзор типовых ошибок в ISAPI-расширениях на C/C++ и форм на ASP .Net.
Учитывая, что материалы книги могут задеть тех, кто склонен идеализировать любимые ими программные продукты и платформы, с юмором используемые авторами религиозные аллюзии (грех и грехопадение) облегчают задачу донесения изложенных идей даже до предвзятой аудитории.
Многие издания для программистов, продвигая новейшие возможности средств разработки и делая упор на технических аспектах, забывают о том, что необходимо также «ставить почерк» — то есть заботиться об обучении хорошему стилю программирования — включающему в себя заботу о качестве и безопасности кода. Было бы отлично, если бы начинающие разработчики и выпускники курсов по разработке прочитали эту книгу — ведь каждый из них сможет в новом измерении увидеть, как применять изученные технические приемы.