Обично нападе на апликације можемо сврстати у три категорије
- Субверзија апликације (извршавање ненамераване функционалности)
- Субверзија система (утицање на оперативни систем или друге апликације)
- Прекид функционалности (рушење апликације/оперативног система, одбијање услуга)
Зашто на почетку сваког C програма којег уносимо у Visual Studio окружењу морамо да дефинишемо
#define _CRT_SECURE_NO_WARNINGS
Зато што је програмски језик C пун небезбедних функција које редовно користимо у изради школских задатака. Неке од небезбедних функција су
scanf()
gets()
strcpy()
strcat()
Функције су небезбедне јер не проверавају количину података које уписују у бафер. Ако је количина података већа од предпостављене долази до преливања бафера (buffer overflow). Преливање бафера обично производи грешку Segmentation fault. Уколико је бафер на стеку дешава се преливање стека (Stack Overflow), односно, уколико је на хипу, преливање хипа (Heap Overflow).
Ове функције немојте НИКАДА да користите у продукцији, односно апликацијама који треба да извршавају неке реалне задатке.