Kot programer ali razvijalec ne moremo preceniti pomena ustvarjanja varnih aplikacij.

Varnost programske opreme se ukvarja z obvladovanjem 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 razvijalec spregleda napako, ustvari nove napake, da bi popravil obstoječe primere, ali s posodobitvami ustvari nove ranljivosti.

Vendar pa obstajata dva ključna postopka, ki ju lahko uporabijo vsi razvijalci programske opreme, da najprej ustvarijo varno kodo za pisanje programske opreme in učinkovito preizkusijo vašo kodo.

Kako napisati varno kodo

Pisanje varne kode se nanaša na eno stvar, ki obravnava napake. Če lahko predvidete vsako potencialno vrednost, ki bi jo uporabnik lahko nahranil, in v programu ustvarite odgovor za to vrednost, potem pišete varno kodo.

To je veliko preprosteje, kot si morda mislite, ker vsi dobri razvijalci vedo skoraj vse o aplikacijah, ki jih razvijejo. Zato bi morali poznati vsako vrednost, ki jo vaša aplikacija zahteva za izvajanje naloge (odobrene vrednosti), in razumeti, da je vsaka druga možna vrednost neodobrena vrednost.

Pisanje varne kode

Recimo, da želite ustvariti program, ki od uporabnika sprejme le dve celoštevilčni vrednosti in nad njimi izvede postopek dodajanja. S tem enim stavkom, kot dober razvijalec, zdaj veste vse o svoji aplikaciji. Poznate vse vrednosti, ki jih bo sprejel ta program (celoštevilske vrednosti), in poznate nalogo, ki jo bo ta program dokončal (postopek dodajanja).

Ustvarjanje programa v primeru Java


uvoz java.util. Optični bralnik;
javni razred Main {
// Glavna funkcija, ki izvaja program in zbira dve vrednosti
public static void main (String [] args) {
System.out.println ("Prosimo, vnesite dve celoštevilčni vrednosti:");
int vrednost1;
int vrednost2;
Vhod za optični bralnik = nov optični bralnik (System.in);
value1 = input.nextInt ();
value2 = input.nextInt ();
seštevanje (vrednost1, vrednost2);
input.close ();
}
// funkcija, ki zbere dve vrednosti in prikaže njihovo vsoto
zasebno statično dodajanje praznine (int vrednost1, int vrednost2) {
int vsota;
vsota = vrednost1 + vrednost2;
System.out.println ("Vsota dveh celoštevilčnih vrednosti, ki ste jih vnesli:" + vsota);
}
}

Zgornja koda ustvari aplikacijo, ki natančno ustreza zahtevam. Ob izvedbi bo v konzoli ustvaril naslednjo vrstico:


Vnesite dve celi števili:

Nato bo aplikacija ostala zaustavljena, dokler uporabnik v konzolo ne vnese dve celoštevilčni vrednosti (to pomeni, da vnese prvo vrednost, pritisne tipko Enter in ponovi).

Če uporabnik vnese vrednosti 5 in 4 v konzoli bo program ustvaril naslednje rezultate:


Vsota dveh celoštevilčnih vrednosti, ki ste jih vnesli: 9

To je odlično; program naredi točno tisto, kar bi moral. Če pa pride hudobni uporabnik in v vašo aplikacijo vnese vrednost, ki ni celo število, na primer »g«, bodo težave. To je zato, ker nobena koda v aplikaciji ne ščiti pred neodobrenimi vrednostmi.

Na tej točki se bo vaša aplikacija zrušila in ustvarila potencialni prehod v vašo aplikacijo za hekerja, ki natančno ve, kaj storiti naprej.

Zaščita vašega programa


uvoz java.util. InputMismatchException;
uvoz java.util. Optični bralnik;
javni razred Main {
// Glavna funkcija, ki izvaja program in zbira dve vrednosti
public static void main (String [] args) {
poskusite {
System.out.println ("Prosimo, vnesite dve celoštevilčni vrednosti:");
int vrednost1;
int vrednost2;
// uporaba razreda skenerja za branje vsakega uporabnikovega vnosa,
// in jo dodelimo ustrezni spremenljivki (vrže izjemo, če vrednosti niso cela števila)
Vhod za optični bralnik = nov optični bralnik (System.in);
value1 = input.nextInt ();
value2 = input.nextInt ();
// pokliče funkcijo seštevanja in ji pošlje dve vrednosti
seštevanje (vrednost1, vrednost2);
// zapre vhodni tok po koncu njegove uporabe
input.close ();
// obravnava vse napake, vržene v poskusnem bloku
} catch (InputMismatchException e) {
System.out.println ("Prosimo, vnesite veljavno celoštevilsko vrednost.");
} ulov (izjema e) {
System.out.println (e.getMessage ());
}
}
// funkcija, ki zbere dve vrednosti in prikaže njihovo vsoto
zasebno statično dodajanje praznine (int vrednost1, int vrednost2) {
int vsota;
vsota = vrednost1 + vrednost2;
System.out.println ("Vsota dveh celoštevilčnih vrednosti, ki ste jih vnesli:" + vsota);
}
}

Zgornja koda je varna, ker izvaja obdelavo izjem. Če torej vnesete vrednost, ki ni celo število, se bo program pravilno končal, medtem ko bo ustvaril naslednjo vrstico kode:


Vnesite veljavno celoštevilsko vrednost.

Kaj je obravnava izjem?

V bistvu je ravnanje z izjemami sodobna različica ravnanja z napakami, kjer ločite kodo za obdelavo napak od običajne kode za obdelavo. V zgornjem primeru je vsa običajna koda za obdelavo (ali koda, ki lahko povzroči izjemo) znotraj poskusite blok in vsa koda za obdelavo napak je znotraj ulov bloki.

Če si podrobneje ogledate zgornji primer, boste ugotovili, da obstajata dva bloka ulova. Prvi vzame InputMismatchException prepir; to je ime izjeme, ki se vrže, če vnesemo vrednost, ki ni celo število. Drugi vzame Izjema argument, in to je pomembno, ker je njegov namen ujeti kakršno koli izjemo znotraj kode, ki je razvijalec ni našel med testiranjem.

Sorodno: Izjeme Java: Ali z njimi ravnate pravilno?

Testiranje vaše kode

Nikoli ne smete podcenjevati moči testiranja in ponovnega testiranja kode pred pakiranjem. Številni razvijalci (in uporabniki njihovih aplikacij) najdejo nove napake, potem ko je programska oprema na voljo javnosti.

Poglobljeno testiranje kode bo zagotovilo, da boste vedeli, kaj bo vaša aplikacija počela v vseh možnih scenarijih, in vam bo omogočilo, da svojo aplikacijo zaščitite pred kršitvami podatkov.

Sorodno: Kako pristati na prvem delovnem mestu za preizkušanje programske opreme

Razmislite o zgornjem primeru. Kaj pa, če po zaključku aplikacijo preizkusite samo s celoštevilčnimi vrednostmi? Morda se boste oddaljili od aplikacije in mislili, da ste uspešno prepoznali vse morebitne napake, če ni tako.

Dejstvo je, da morda ne boste mogli prepoznati vseh morebitnih napak; zato ravnanje z napakami tesno sodeluje s preizkušanjem vaše kode. Preizkušanje zgornjega programa kaže, da se v določenem scenariju pojavi ena potencialna napaka.

Če pa obstaja kakšna druga napaka, ki se med preskusom ni pojavila, jo bo rešil drugi blok ulova v zgornji kodi.

Zaščita vaše zbirke 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 vaše aplikacije varni. Kaj pa, če je vaša aplikacija zasnovana z edinim namenom zagotoviti vmesnik do omenjene baze podatkov?

Tu postanejo stvari nekoliko bolj zanimive. V svoji najosnovnejši obliki baza podatkov uporabniku omogoča dodajanje, pridobivanje, posodabljanje in brisanje podatkov. Sistem za upravljanje baz podatkov je aplikacija, ki uporabniku omogoča neposredno interakcijo z bazo podatkov.

Večina baz podatkov vsebuje občutljive podatke, zato je za ohranitev celovitosti in omejevanja dostopa do teh podatkov potreben en nadzor dostopa.

Nadzor dostopa

Nadzor dostopa skuša ohraniti celovitost baze podatkov z opredelitvijo vrste ljudi, ki lahko dostopajo do baze podatkov, in omejitvijo njihovega dostopa. Zato bi moral dober sistem za upravljanje z bazami podatkov omogočati beleženje, kdo dostopa do baze podatkov, kdaj in kaj je storil.

Prav tako mora imeti možnost, da registriranemu uporabniku prepreči dostop ali urejanje podatkov, s katerimi ni pooblaščen za interakcijo.

Varnost programske opreme je ključnega pomena za vse razvijalce

Razvoj dobre programske opreme je sinonim za zagotavljanje, da lahko vaša programska oprema prenese vse zlonamerne napade. To je mogoče doseči samo s pisanjem varne kode, nenehnim preizkušanjem aplikacije in ohranjanjem nadzora nad tem, kdo ima dostop do vaših podatkov.

Zdaj, ko veste, kako zaščititi svojo programsko opremo, boste morda želeli izvedeti nekaj korakov za razvoj programske opreme.

E-naslov
6 korakov za razvoj programske opreme, ki bi jih morali poznati vsi programerji

Se pripravljate na kodiranje svojega prvega programa? Upoštevajte te ključne korake za razvoj programske opreme.

Preberite Naprej

Sorodne teme
  • Programiranje
  • Spletna varnost
  • Nasveti za kodiranje
O avtorju
Kadeisha Kean (15 objavljenih člankov)

Kadeisha Kean je razvijalka programske opreme s polnim skladom in pisateljica tehničnih / tehnoloških tehnologij. Ima izrazito sposobnost poenostavitve nekaterih najbolj zapletenih tehnoloških konceptov; izdelujejo materiale, ki jih lahko vsak tehnološki začetnik zlahka razume. Navdušena je nad pisanjem, razvojem zanimive programske opreme in potovanjem po svetu (skozi dokumentarne filme).

Več od Kadeisha Kean

Naročite se na naše novice

Pridružite se našemu glasilu za tehnične nasvete, preglede, brezplačne e-knjige in ekskluzivne ponudbe!

Še en korak…!

Potrdite svoj e-poštni naslov v e-poštnem sporočilu, ki smo vam ga pravkar poslali.

.