Kot programer ali razvijalec ne morete spregledati pomena ustvarjanja varnih aplikacij.
Varnost programske opreme obravnava upravljanje zlonamernih napadov tako, da prepozna morebitne ranljivosti v programski opremi in sprejme potrebne varnostne ukrepe za njihovo zaščito.
Programska oprema nikoli ne more biti 100-odstotno varna, ker lahko razvijalci ignorirajo napako, uvedejo nove napake, medtem ko popravljajo obstoječe, ali uvedejo nove ranljivosti s posodobitvami.
Vendar obstajata dve glavni metodi, ki ju lahko uporabijo vsi razvijalci programske opreme, da zagotovijo ustvarjanje varne programske opreme. Gre za pisanje varne kode od začetka in učinkovito testiranje kode.

Varnost programske opreme igra izjemno pomembno vlogo
Kako napisati varno kodo
Pisanje varne kode ima samo eno stvar - obravnavanje napak. Če lahko predvidite vsako potencialno vrednost, ki jo uporabnik lahko posreduje aplikaciji, in ustvarite odgovor v programu za to vrednost, potem pišete varno kodo.
To je veliko bolj preprosto, kot si morda mislite, saj vsi dobri razvijalci vedo skoraj vse o aplikacijah, ki jih razvijajo. Zato bi morali poznati vsako vrednost, ki jo vaša aplikacija zahteva za izvedbo naloge (odobrene vrednosti), in razumeti, da so vse druge vrednosti, ki morda obstajajo, neodobrene vrednosti.
Napišite varno kodo
Recimo, da želite ustvariti program, ki od uporabnika sprejme samo dve celoštevilski vrednosti in nad njima izvede operacijo dodajanja. Kot dober razvijalec zdaj veste vse o svoji aplikaciji. Poznate vse vrednosti, ki jih bo ta program sprejel (celoštevilske vrednosti), in poznate nalogo, ki jo bo ta program opravil (operacija dodajanja).
Primer izdelave programa v Javi
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);
}
}
Zgornja koda ustvari aplikacijo, ki natančno ustreza zahtevam. Ko se izvede, bo v konzoli ustvaril naslednjo vrstico:
Please enter your two integer values:
Aplikacija bo nato ostala zaustavljena, dokler uporabnik v konzolo ne vnese dveh celih vrednosti (kar pomeni, da vnesete prvo vrednost, pritisnete tipko Enter in ponovite).
Če uporabnik v konzolo vnese vrednosti 5 in 4 , program ustvari naslednji rezultat:
The sum of the two integer values you entered: 9
To je super. Program dela točno to, kar mora. Če pa pride nečeden uporabnik in v vašo aplikacijo vnese vrednost, ki ni celo število, kot je »g«, bo prišlo do težave. To je zato, ker v aplikaciji ni kode, ki bi ščitila pred neodobrenimi vrednostmi.
Na tej točki se bo vaša aplikacija zrušila in ustvarila potencialni prehod v vašo aplikacijo, tako da hekerji natančno vedo, kaj storiti naprej.
Primer varnosti programa
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);
}
}
Zgornja koda je varna, ker izvaja obravnavo izjem. Če torej vnesete vrednost, ki ni celo število, bo program ustvaril naslednjo vrstico kode:
Please enter a valid integer value.
Kaj je obravnavanje izjem?

Obravnava izjem
V bistvu je obravnavanje izjem sodobna različica obravnavanja napak, kjer kodo za obravnavanje napak ločite od običajne kode za obravnavanje. V zgornjem primeru je vsa običajna koda za obravnavo (ali koda, ki bi lahko povzročila izjeme) v poskusnem bloku , vsa koda za obravnavo napak pa v bloku catch.
Če pogledate bližje zgornji primer, boste videli, da obstajata dva bloka za ulov. Prvi sprejme argument InputMismatchException - to je ime vržene izjeme, če je vnesena vrednost, ki ni celo število. Drugi sprejme argument Izjema in to je pomembno, ker je njegov namen najti morebitne izjeme v kodi, ki jih razvijalec med testiranjem ni našel.
Preverite kodo
Nikoli ne smete podcenjevati moči testiranja in ponovnega testiranja kode. Številni razvijalci (in uporabniki aplikacij) najdejo nove napake, potem ko je programska oprema na voljo javnosti.
Temeljito testiranje vaše kode zagotavlja, da veste, kaj bo vaša aplikacija naredila v vseh možnih situacijah, in to vam omogoča, da jo zaščitite pred kršitvami podatkov.
Razmislite o zgornjem primeru. Kaj pa, če po zaključku preizkusite aplikacijo samo s celimi vrednostmi? Aplikacijo lahko zapustite z mislijo, da ste uspešno prepoznali vse morebitne napake, čeprav v resnici niste.
Dejstvo je, da morda ne boste mogli prepoznati vseh morebitnih napak. Zato obravnavanje napak deluje v tandemu s testiranjem vaše kode. Testiranje zgornjega programa razkrije potencialno napako, ki se bo pojavila v določeni situaciji.
Če pa obstaja kakšna druga napaka, ki se ni pojavila med testiranjem, jo bo obravnaval drugi blok catch v zgornji kodi.
Varnost baze podatkov
Če se vaša aplikacija poveže z bazo podatkov, je najboljši način, da preprečite dostop do te baze podatkov, zagotoviti, da so vsi vidiki aplikacije varni. Kaj pa, če je vaša aplikacija zasnovana z edinim namenom zagotavljanja vmesnika do omenjene baze podatkov?
Tukaj stvari postanejo nekoliko bolj zanimive. V najosnovnejši obliki baze podatkov uporabnikom omogočajo dodajanje, pridobivanje, posodabljanje in brisanje podatkov. Sistem za upravljanje baze podatkov je aplikacija, ki uporabnikom omogoča neposredno interakcijo z bazo podatkov.
Večina podatkovnih zbirk vsebuje občutljive podatke, zato za ohranitev celovitosti in omejitev dostopa do teh podatkov obstaja zahteva - nadzor dostopa.
Nadzor dostopa
Nadzor dostopa skuša ohraniti celovitost baze podatkov z določanjem vrst ljudi, ki lahko dostopajo do baze podatkov, in omejevanjem vrste dostopa, ki ga imajo. Zato mora imeti dober sistem za upravljanje baz podatkov možnost beleženja, kdo je dostopal do baze podatkov, kdaj in kaj je naredil.
Prav tako lahko registriranim uporabnikom prepreči dostop ali urejanje podatkov, s katerimi nimajo pooblastil za interakcijo.