Переполнение буфера в стеке и куче, по сути, вызвано записью большого количества данных в область памяти, которая слишком мала, чтобы содержать все данные, - что приводит к тому, что данные записываются сверх пределов выделения и разбрасывают все, что находится после этого, логически в объем памяти. В случае переполнения стека это может быть адрес возврата для функции, а в случае переполнения кучи это может включать указатели виртуальных функций из других объектов C++ в куче. В любом случае злоумышленник может использовать уязвимость, чтобы получить контроль над процессом, когда перезаписанная функция возвращается или используется перезаписанный объект кучи.
Веб-приложения, написанные на PHP, C #, VB, VB.NET, ASP.NET, Ruby-on-rails, серверном javascript и JSP, являются управляемыми приложениями и не допускают таких уязвимостей, как переполнение буфера стека или переполнение буфера динамической памяти. вызвано неправильным кодом веб-приложения. Переполнения буфера, как правило, являются прерогативой приложений C/C++, хотя другие менее распространенные "родные" языки, такие как Dephi и Fortran, также подвержены уязвимости.
Если вы веб-разработчик, наиболее важным классом уязвимостей, на который вам нужно обратить внимание, являются SQL-инъекции и проблемы, вызванные неуместным включением /eval /file-write в коде сервера, который может допускать передачу строкой или файлом пользователь в конечном итоге будет рассматриваться как код на сервере. К сожалению для веб-разработчиков, эти типы атак имеют тенденцию быть намного более эффективными и намного легче сделать, чем атаки переполнения буфера на нативный код, и, следовательно, влияние неполного понимания безопасности как веб-разработчика может быть намного более болезненным чем не понимание безопасности как родного разработчика.