Som programmerer eller utvikler kan viktigheten av å lage sikre applikasjoner ikke overses.
Programvaresikkerhet adresserer håndtering av ondsinnede angrep ved å identifisere potensielle sårbarheter i programvare og ta nødvendige forholdsregler for å beskytte dem.
Programvare kan aldri være 100 % sikker fordi utviklere kan ignorere en feil, introdusere nye feil mens de fikser eksisterende, eller introdusere nye sårbarheter gjennom oppdateringer.
Det er imidlertid to hovedmetoder som alle programvareutviklere kan bruke for å sikre at de lager sikker programvare. Det handler om å skrive sikker kode fra begynnelsen og teste koden effektivt.

Programvaresikkerhet spiller en ekstremt viktig rolle
Hvordan skrive sikker kode
Å skrive sikker kode har bare én ting å gjøre - feilhåndtering. Hvis du kan forutse hver potensielle verdi brukeren kan gi til applikasjonen og generere et svar i programmet for den verdien, skriver du sikker kode.
Dette er mye enklere enn du kanskje tror, ettersom alle gode utviklere vet nesten alt om applikasjonene de utvikler. Derfor bør du kjenne til hver verdi som applikasjonen din krever for å utføre en oppgave (godkjente verdier) og forstå at alle andre verdier som kan eksistere er ikke-godkjente verdier.
Skriv sikker kode
Anta at du vil lage et program som bare aksepterer to heltallsverdier fra brukeren og utfører en tilleggsoperasjon på dem. Som en god utvikler vet du nå alt om applikasjonen din. Du vet alle verdiene dette programmet vil akseptere (heltallsverdier), og du vet oppgaven dette programmet vil utføre (en tilleggsoperasjon).
Eksempel på å lage et program i Java
import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
addition(value1, value2);
input.close();
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}
Koden ovenfor oppretter en applikasjon som samsvarer nøyaktig med kravene. Når den utføres, vil den produsere følgende linje i konsollen:
Please enter your two integer values:
Applikasjonen vil da forbli satt på pause til brukeren legger inn to heltallsverdier i konsollen (som betyr å angi den første verdien, trykk på Enter- tasten og gjenta).
Hvis brukeren skriver inn verdiene 5 og 4 i konsollen, produserer programmet følgende utgang:
The sum of the two integer values you entered: 9
Det er flott. Programmet gjør akkurat det det skal. Men hvis en ond bruker kommer inn og skriver inn en ikke-heltallsverdi, for eksempel "g", i applikasjonen din, vil det være et problem. Dette er fordi det ikke er noen kode i applikasjonen som beskytter mot ikke-godkjente verdier.
På dette tidspunktet vil applikasjonen din krasje, og skape en potensiell inngangsport til applikasjonen din slik at hackere vet nøyaktig hva de skal gjøre videre.
Eksempel på programsikkerhet
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
//The main function that executes the program and collects the two values
public static void main(String[] args) {
try {
System.out.println("Please enter your two integer values: ");
int value1;
int value2;
//using the scanner class to read each input from the user,
//and assign it to is respective variable (throws an exception if the values are not integers)
Scanner input = new Scanner(System.in);
value1 = input.nextInt();
value2 = input.nextInt();
//calls the addition function and passes the two values to it
addition(value1, value2);
//closes the input stream after it has come to the end of its use
input.close();
//handle all the errors thrown in the try block
}catch(InputMismatchException e){
System.out.println("Please enter a valid integer value.");
}catch(Exception e) {
System.out.println(e.getMessage());
}
}
//the function that collects the two values and displays their sum
private static void addition(int value1, int value2) {
int sum;
sum = value1 + value2;
System.out.println("The sum of the two integer values you entered: "+ sum);
}
}
Koden ovenfor er sikker fordi den utfører unntakshåndtering. Derfor, hvis du skriver inn en ikke-heltallsverdi, vil programmet generere følgende kodelinje:
Please enter a valid integer value.
Hva er unntakshåndtering?

Avvikshåndtering
I hovedsak er unntakshåndtering den moderne versjonen av feilhåndtering, der du skiller feilhåndteringskoden fra den vanlige håndteringskoden. I eksemplet ovenfor er all normal håndteringskode (eller potensielt unntak-forårsakende kode) i try -blokken og all feilhåndteringskode er i catch-blokken.
Hvis du ser nærmere på eksemplet ovenfor, vil du se at det er to fangblokker. Den første tar et InputMismatchException- argument - dette er navnet på unntaket som blir kastet hvis en ikke-heltallsverdi er angitt. Det andre tar Exception- argumentet , og dette er viktig fordi formålet er å finne eventuelle unntak i koden som utvikleren ikke fant under testing.
Sjekk koden
Du bør aldri undervurdere kraften ved å teste og teste kode på nytt. Mange utviklere (og app-brukere) finner nye feil etter at programvaren er gjort tilgjengelig for allmennheten.
Grundig testing av koden din sikrer at du vet hva applikasjonen din vil gjøre i alle tenkelige situasjoner, og det lar deg beskytte den mot datainnbrudd.
Tenk på eksempelet ovenfor. Hva om du, når den er fullført, bare tester applikasjonen med heltallsverdier? Du kan forlate applikasjonen og tro at du har identifisert alle potensielle feil, mens du faktisk ikke har det.
Realiteten er at du kanskje ikke kan identifisere alle potensielle feil. Dette er grunnen til at feilhåndtering fungerer sammen med å teste koden din. Testing av programmet ovenfor avslører en potensiell feil som vil oppstå i en bestemt situasjon.
Men hvis det finnes en annen feil som ikke dukket opp under testing, vil den andre fangstblokken i koden ovenfor håndtere det.
Databasesikkerhet
Hvis applikasjonen din kobles til en database, er den beste måten å forhindre tilgang til den databasen på å sikre at alle aspekter av applikasjonen er sikre. Men hva om applikasjonen din er designet med det eneste formålet å gi et grensesnitt til databasen?
Det er her ting blir litt mer interessant. I sin mest grunnleggende form lar databaser brukere legge til, hente, oppdatere og slette data. Et databasestyringssystem er et program som lar brukere samhandle direkte med en database.
De fleste databaser inneholder sensitive data, derfor, for å opprettholde integriteten og begrense tilgangen til disse dataene, er det et krav - tilgangskontroll.
Adgangskontroll
Tilgangskontroll søker å opprettholde integriteten til databasen ved å bestemme hvilke typer personer som kan få tilgang til databasen og begrense typen tilgang de har. Derfor må et godt databasestyringssystem kunne registrere hvem som har tilgang til databasen, når og hva de gjorde.
Det kan også hindre registrerte brukere i å få tilgang til eller redigere data som de ikke er autorisert til å samhandle med.