Развој безбедног софтвера

Циљ и исход предмета

Упознавање са основама сигурности софтвера, најчешћим проблемима у области безбедности софтвера и начинима њиховог решавања. По завршетку курса студент ће имати дубље разумевање значаја и основних концепата безбедности софтвера и биће способан да препозна најчешће пропусте у сигурности софтвера и да осмисли стратегију избегавања или уклањања оваквих пропуста.

Теоријска настава

Улога сигурности у софтверском инжењерству. Проблем безбедности софтвера. Разлози за појаву пропуста у безбедности софтвера. Најчешћи примери пропуста у безбедности софтвера, примери прогармског кода и начини за решавање описаних пропуста (препуњеност бафера, испадање из опсега могућих вредности, SQL ињекција, уметање скрипте у веб страницу). Пропусти у праћењу протока на мрежи и безбедност веб апликација. Безбедност сесија. Технике за обезбеђивање безбедности сесија. Сигурно складиштење и пренос података. Категоризација за проблеме безбедности софтвера (CWE - Common Weakness Enumeration). Карактеристике програмских језика, технологија и оперативних система са аспекта безбедности софтвера. Поступци провере сигурности софтвера. Тестирање сигурности (fuzzing).

Практична настава

Примери програмског кода у којима постоји проблем препуњености бафера или изласка из опсега вредности. Лабораторијске вежбе исправљања програмског кода ради избегавања наведених проблема сигурности. Илустрација проблема SQL ињекције. Вежба имплементација техника за превазилажење проблема SQL ињекције. Имплементација сигурног извршавања сесија. Студија случаја провере сигурности једне десктоп апликације која користи базу података. Студија случаја провере сигурности једне веб апликације која користи базу података. Вежба писања и извршавања тестова сигурности софтвера.