Razvoj bezbednog softvera

Cilj i ishod predmeta

Upoznavanje sa osnovama sigurnosti softvera, najčešćim problemima u oblasti bezbednosti softvera i načinima njihovog rešavanja. Student ima dublje razumevanje značaja i osnovnih koncepata bezbednosti softvera i sposoban je  da prepozna najčešće propuste u sigurnosti softvera i da osmisli strategiju izbegavanja ili uklanjanja ovakvih propusta.

Teorijska nastava

Uloga sigurnosti u softverskom inženjerstvu. Problem bezbednosti softvera. Razlozi za pojavu propusta u bezbednosti softvera. Najčešći primeri propusta u bezbednosti softvera, primeri programskog koda i načini za rešavanje opisanih propusta (prepunjenost bafera, ispadanje iz opsega mogućih vrednosti, SQL injekcija, umetanje skripte u veb stranicu). Propusti u praćenju protoka na mreži i bezbednost veb aplikacija. Bezbednost sesija. Tehnike za obezbeđivanje bezbednosti sesija. Sigurno skladištenje i prenos podataka. Kategorizacija za probleme bezbednosti softvera (CWE – Common Weakness Enumeration). Karakteristike programskih jezika, tehnologija i operativnih sistema sa aspekta bezbednosti softvera. Postupci provere sigurnosti softvera. Testiranje sigurnosti (fuzzing).

Praktična nastava

Primeri programskog koda u kojima postoji problem prepunjenosti bafera ili izlaska iz opsega vrednosti. Laboratorijske vežbe ispravljanja programskog koda radi izbegavanja navedenih problema sigurnosti. Ilustracija problema SQL injekcije. Vežba implementacija tehnika za prevazilaženje problema SQL injekcije. Implementacija sigurnog izvršavanja sesija. Studija slučaja provere sigurnosti jedne desktop aplikacije koja koristi bazu podataka. Studija slučaja provere sigurnosti jedne veb aplikacije koja koristi bazu podataka. Vežba pisanja i izvršavanja testova sigurnosti softvera.

5750-razvoj-bezbednog-softvera