Kao programer ili programer, važnost stvaranja sigurnih aplikacija ne može se precijeniti.

Softverska sigurnost bavi se upravljanjem zlonamjernim napadima utvrđivanjem potencijalnih ranjivosti u softveru i poduzimanjem potrebnih mjera predostrožnosti kako bi se zaštitili od njih.

Softver nikada ne može biti 100% siguran jer programer može previdjeti grešku, stvoriti nove greške u pokušaju da popravi postojeće slučajeve ili stvoriti nove ranjivosti putem ažuriranja.

Međutim, postoje dvije ključne prakse koje svi programeri softvera mogu upotrijebiti kako bi osigurali prvo stvaranje sigurnog sigurnog koda za pisanje softvera i učinkovito testiranje vašeg koda.

Kako napisati siguran kod

Pisanje sigurnog koda svodi se na jedno rukovanje pogreškama. Ako možete predvidjeti svaku potencijalnu vrijednost kojom bi korisnik mogao hraniti vašu aplikaciju i stvoriti odgovor u vašem programu za tu vrijednost, tada pišete siguran kod.

Ovo je mnogo jednostavnije nego što možda mislite jer svi dobri programeri znaju gotovo sve o aplikacijama koje razvijaju. Stoga biste trebali znati svaku vrijednost koju vaša aplikacija zahtijeva za izvršavanje zadatka (odobrene vrijednosti) i razumjeti da je svaka druga moguća vrijednost neodobrena vrijednost.

instagram viewer

Pisanje sigurnog koda

Recimo da želite stvoriti program koji od korisnika prihvaća samo dvije cjelobrojne vrijednosti i na njima izvodi operaciju zbrajanja. S tom jednom rečenicom, poput dobrog programera, sada znate sve o svojoj aplikaciji. Znate sve vrijednosti koje će ovaj program prihvatiti (cjelobrojne vrijednosti) i znate zadatak koji će ovaj program dovršiti (operacija zbrajanja).

Stvaranje programa na primjeru Jave


uvoz java.util. Skener;
javna klasa Main {
// Glavna funkcija koja izvršava program i prikuplja dvije vrijednosti
javna statička void glavna (String [] args) {
System.out.println ("Unesite svoje dvije cjelobrojne vrijednosti:");
int vrijednost1;
int vrijednost2;
Ulaz za skener = novi skener (System.in);
vrijednost1 = input.nextInt ();
vrijednost2 = input.nextInt ();
zbrajanje (vrijednost1, vrijednost2);
input.close ();
}
// funkcija koja prikuplja dvije vrijednosti i prikazuje njihov zbroj
privatno statičko dodavanje praznine (int vrijednost1, int vrijednost2) {
int zbroj;
zbroj = vrijednost1 + vrijednost2;
System.out.println ("Zbroj dviju cijelih vrijednosti koje ste unijeli:" + zbroj);
}
}

Gornji kod daje aplikaciju koja precizno odgovara zahtjevima. Nakon izvršenja, u konzoli će se pojaviti sljedeći redak:


Unesite svoje dvije cjelobrojne vrijednosti:

Tada će aplikacija ostati pauzirana sve dok korisnik u konzolu ne unese dvije cjelobrojne vrijednosti (to znači da upiše prvu vrijednost, pritisne tipku enter i ponovi).

Ako korisnik unese vrijednosti 5 i 4 u konzoli će program proizvesti sljedeći izlaz:


Zbroj dviju cijelih vrijednosti koje ste unijeli: 9

Ovo je super; program radi točno ono što bi trebao učiniti. Međutim, ako naiđe nevaljali korisnik i u vašu aplikaciju unese necjelobrojnu vrijednost, poput "g", bit će problema. To je zato što niti jedan kod u aplikaciji ne štiti od neodobrenih vrijednosti.

U ovom će se trenutku vaša aplikacija srušiti, stvarajući potencijalni ulaz u vašu aplikaciju za hakera koji točno zna što sljedeće treba učiniti.

Osiguravanje primjera vašeg programa


uvoz java.util. InputMismatchException;
uvoz java.util. Skener;
javna klasa Main {
// Glavna funkcija koja izvršava program i prikuplja dvije vrijednosti
javna statička void glavna (String [] args) {
probaj {
System.out.println ("Unesite svoje dvije cjelobrojne vrijednosti:");
int vrijednost1;
int vrijednost2;
// korištenje klase skenera za čitanje svakog unosa od korisnika,
// i dodijeli mu odgovarajuću varijablu (izuzima iznimku ako vrijednosti nisu cijeli brojevi)
Ulaz za skener = novi skener (System.in);
vrijednost1 = input.nextInt ();
vrijednost2 = input.nextInt ();
// poziva funkciju zbrajanja i prosljeđuje joj dvije vrijednosti
zbrajanje (vrijednost1, vrijednost2);
// zatvara ulazni tok nakon što je došao do kraja njegove upotrebe
input.close ();
// obrađujemo sve pogreške izbačene u bloku try
} catch (InputMismatchException e) {
System.out.println ("Unesite valjanu cijelu vrijednost.");
} catch (Iznimka e) {
System.out.println (e.getMessage ());
}
}
// funkcija koja prikuplja dvije vrijednosti i prikazuje njihov zbroj
privatno statičko dodavanje praznine (int vrijednost1, int vrijednost2) {
int zbroj;
zbroj = vrijednost1 + vrijednost2;
System.out.println ("Zbroj dviju cijelih vrijednosti koje ste unijeli:" + zbroj);
}
}

Gore navedeni kod je siguran jer izvršava rukovanje iznimkama. Stoga, ako unesete necijelu vrijednost, program će se pravilno završiti dok proizvodi sljedeći redak koda:


Unesite valjanu cijelu vrijednost.

Što je rukovanje iznimkama?

U osnovi je rukovanje iznimkama moderna verzija rukovanja pogreškama, gdje kôd za rukovanje pogreškama odvajate od uobičajenog koda za obradu. U gornjem primjeru, sav uobičajeni kôd za obradu (ili kôd koji potencijalno može izuzeti) nalazi se unutar a probati blok, a sav kôd za rukovanje pogreškama je unutar ulov blokovi.

Ako pažljivije pogledate gornji primjer, ustanovit ćete da postoje dva bloka ulova. Prvi uzima an InputMismatchException argument; ovo je ime iznimke koja se izbacuje ako se unese necijela vrijednost. Drugi uzima an Iznimka argument, a ovo je važno jer je njegova svrha uhvatiti bilo kakvu iznimku unutar koda koju programer nije pronašao tijekom testiranja.

Povezano: Iznimke Java: Jeste li s njima u redu?

Testiranje vašeg koda

Nikada ne biste trebali podcjenjivati ​​moć testiranja i ponovnog testiranja koda prije pakiranja. Mnogi programeri (i korisnici njihovih aplikacija) pronalaze nove programske pogreške nakon što je softver dostupan javnosti.

Temeljito testiranje vašeg koda osigurat će vam da znate što će vaša aplikacija raditi u svim zamislivim scenarijima, a to vam omogućava da zaštitite svoju aplikaciju od kršenja podataka.

Povezano: Kako dobiti prvo radno mjesto za testiranje softvera

Razmotrite gornji primjer. Što ako nakon završetka testirate aplikaciju samo s cijelim vrijednostima? Možda se udaljite od aplikacije misleći da ste uspješno identificirali sve potencijalne pogreške kada to nije slučaj.

Činjenica je da možda nećete moći prepoznati sve potencijalne pogreške; to je razlog zašto rukovanje pogreškama djeluje ruku pod ruku s testiranjem vašeg koda. Testiranje gornjeg programa pokazuje da će se u određenom scenariju pojaviti jedna potencijalna pogreška.

Međutim, ako postoji neka druga pogreška koja se nije pojavila tijekom testiranja, drugi blok catch u gornjem kodu to će riješiti.

Osiguravanje vaše baze podataka

Ako se vaša aplikacija poveže s bazom podataka, najbolji način da spriječite pristup toj bazi podataka je osigurati da su svi aspekti vaše aplikacije sigurni. Međutim, što ako je vaša aplikacija dizajnirana s jedinom svrhom pružanja sučelja spomenutoj bazi podataka?

Tu stvari postaju malo zanimljivije. U svom najosnovnijem obliku baza podataka omogućuje korisniku dodavanje, dohvaćanje, ažuriranje i brisanje podataka. Sustav za upravljanje bazom podataka aplikacija je koja omogućuje korisniku izravnu interakciju s bazom podataka.

Većina baza podataka sadrži osjetljive podatke, stoga je za održavanje integriteta i ograničavanje pristupa tim podacima potrebna kontrola pristupa.

Kontrola pristupa

Kontrola pristupa nastoji održati integritet baze podataka definiranjem vrste ljudi koji mogu pristupiti bazi podataka i ograničavanjem vrste pristupa koji imaju. Stoga bi dobar sustav za upravljanje bazama podataka trebao moći evidentirati tko pristupa bazi podataka, u koje vrijeme i što je radio.

Također bi trebao biti u mogućnosti spriječiti registrirani korisnik u pristupu ili uređivanju podataka s kojima nije ovlašten komunicirati.

Sigurnost softvera presudna je vještina za sve programere

Razvoj dobrog softvera sinonim je osiguranja da vaš softver može izdržati bilo koji zlonamjerni napad. To je moguće postići samo pisanjem sigurnog koda, stalnim testiranjem aplikacije i održavanjem kontrole nad tim tko ima pristup vašim podacima.

Sad kad znate kako zaštititi svoj softver, možda biste željeli naučiti neke korake razvoja softvera.

E-mail
6 koraka za razvoj softvera koji bi svi programeri trebali znati

Pripremate se za kodiranje vašeg prvog programa? Obavezno slijedite ove ključne korake za razvoj softvera.

Pročitajte Dalje

Povezane teme
  • Programiranje
  • Kibernetička sigurnost
  • Savjeti za kodiranje
O autoru
Kadeisha Kean (Objavljeno 15 članaka)

Kadeisha Kean je programerica softvera u cijeloj tehnologiji i pisac tehničkih / tehnoloških tehnologija. Ona ima izrazitu sposobnost pojednostavljivanja nekih od najsloženijih tehnoloških koncepata; proizvodeći materijal koji lako može razumjeti bilo koji tehnološki novak. Zaljubljena je u pisanje, razvoj zanimljivog softvera i putovanje svijetom (kroz dokumentarne filmove).

Više od Kadeishe Kean

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Još jedan korak…!

Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.

.