“Secure by design” je metodologija za stvaranje računalnih aplikacija ili sustava u kojima su svi aspekti softvera inherentno razvijeni na način koji otežava ili onemogućuje zlonamjernom korisniku da ošteti, napadne ili kompromituje sustav. U mnogim slučajevima, softver koji je siguran po dizajnu planira se od začeća kako bi se zatvorile i najmanje sigurnosne rupe u elementarnim funkcijama i za korištenje pouzdanih, klasičnih tehnika tijekom faze kodiranja kako bi se osiguralo da se nedostaci ne prenesu u gotov proizvod. Neka od glavnih područja koja su u fokusu sigurnog inženjeringa po dizajnu su korisnički ili klijentski unos, sigurna komunikacija i osnovna provjera valjanosti kako bi se osiguralo da određene vrste napada budu onemogućene. Iako nijedna računalna aplikacija nije imuna na sve zlonamjerne napade, sustav zaštićen po dizajnu ima izrazitu prednost u odnosu na sustave koji koriste vanjske sigurnosne biblioteke ili se oslanjaju na sigurnost okolnog okruženja, kao što je operativni sustav, jer dizajn softver je napravljen za sprječavanje i obuzdavanje izrabljivačkih napada.
Jedno od najranjivijih područja svake računalne aplikacije, zbog svoje nepredvidive prirode, je korisnički unos. Unos koji nije provjeren, koristi se bez provjere grešaka ili je slijepo prihvaćen iz bilo kojeg izvora može koristiti unutarnje djelovanje sustava protiv sebe kako bi izložio osjetljive podatke ili prouzročio pad sustava. Kada je aplikacija zaštićena dizajnom, korisnički se unos obično na neki način provjerava, provjerava ima li zlonamjernih sekvenci ili se čak pretvara u siguran format kako bi se mogao obraditi bez brige o nepredvidivom ponašanju koje bi moglo proizaći iz zadane obrade nekih kombinacija znakova.
Pitanje korisničkog unosa postaje složenije u sustavu koji je siguran po dizajnu kada je softver poslužitelj koji prihvaća unos od klijenta preko mreže. Neki napadači mogu presresti valjane poruke od klijenta do poslužitelja ili u potpunosti krivotvoriti klijenta, tako da se obično koriste druge metode osim vlasničke enkripcije, jer napadač koji presretne poruke može lako razbiti enkripciju. Učinkovitije metode sigurnosti unutar dizajna programa uključuju ograničavanje informacija koje klijent šalje i ograničavanje sposobnosti poslužitelja ili modula u onome što može ili ne može učiniti sam.
Kombinacijom softverske modularnosti s načelom najmanje privilegija, sustav koji je dizajnom siguran može spriječiti napadače da u potpunosti kompromitiraju sustav delegiranjem zadataka između modula koji nemaju nužno sposobnost samostalnog izvođenja jedne destruktivne radnje. Na taj se način mogu postaviti zaštitni i sigurnosni sefovi koji mogu omogućiti sustavu da se oporavi od upada. Ovaj koncept je teško ugraditi u aplikaciju koja ne koristi principe koji su sigurni po dizajnu, jer zahtijeva da cjelokupna arhitektura programa bude usmjerena prema cilju sigurnosti.