Ca programator sau dezvoltator, importanța creării de aplicații sigure nu poate fi exagerată.
Securitatea software-ului se ocupă de gestionarea atacurilor rău intenționate prin identificarea potențialelor vulnerabilități din software și luarea măsurilor de precauție necesare pentru a se proteja împotriva acestora.
Software-ul nu poate fi niciodată 100% sigur deoarece un dezvoltator poate trece cu vederea o eroare, poate crea noi erori în încercarea de a remedia cazurile existente sau poate crea noi vulnerabilități prin actualizări.
Cu toate acestea, există două practici-cheie pe care toți dezvoltatorii de software le pot folosi pentru a se asigura că creează în primul rând cod securizat de scriere software și, în primul rând, și testarea eficientă a codului dvs.
Cum se scrie cod securizat
Scrierea codului securizat se rezumă la un singur lucru: gestionarea erorii. Dacă puteți anticipa fiecare valoare potențială pe care un utilizator ar putea să o alimenteze cu aplicația dvs. și să creeze un răspuns în programul dvs. pentru acea valoare, atunci scrieți cod securizat.
Acest lucru este mult mai simplu decât ați putea crede, deoarece toți dezvoltatorii buni știu aproape totul despre aplicațiile pe care le dezvoltă. Prin urmare, ar trebui să cunoașteți fiecare valoare pe care o solicită aplicația dvs. pentru a realiza o sarcină (valorile aprobate) și să înțelegeți că orice altă valoare posibilă existentă este o valoare neaprobată.
Scrierea unui cod securizat
Să presupunem că doriți să creați un program care acceptă doar două valori întregi de la un utilizator și efectuează o operație de adăugare asupra acestora. Cu acea propoziție, ca un dezvoltator bun, acum știi totul despre aplicația ta. Știți toate valorile pe care acest program le va accepta (valori întregi) și știți sarcina pe care acest program o va finaliza (o operație de adăugare).
Crearea programului în Java Exemplu
import java.util. Scanner;
public class Main {
// Funcția principală care execută programul și colectează cele două valori
public static void main (String [] args) {
System.out.println ("Vă rugăm să introduceți cele două valori întregi:");
int valoare1;
valoare int2;
Intrare scaner = Scanner nou (System.in);
valoare1 = input.nextInt ();
valoare2 = input.nextInt ();
adunare (valoare1, valoare2);
input.close ();
}
// funcția care colectează cele două valori și afișează suma acestora
adaos de gol privat static (int valoare1, int valoare2) {
int sum;
sumă = valoare1 + valoare2;
System.out.println ("Suma celor două valori întregi pe care le-ați introdus:" + sumă);
}
}
Codul de mai sus produce o aplicație care corespunde exact cerințelor. La execuție, va produce următoarea linie în consolă:
Vă rugăm să introduceți cele două valori întregi:
Aplicația va rămâne apoi întreruptă până când utilizatorul introduce două valori întregi în consolă (asta înseamnă să tastați prima valoare, să apăsați tasta Enter și să repetați).
Dacă utilizatorul introduce valorile 5 și 4 în consolă, programul va produce următoarea ieșire:
Suma celor două valori întregi pe care le-ați introdus: 9
Asta e super; programul face exact ceea ce ar trebui să facă. Cu toate acestea, dacă un utilizator nefast apare și introduce o valoare neîntregă, cum ar fi „g”, în aplicația dvs., vor apărea probleme. Acest lucru se datorează faptului că niciun cod din aplicație nu protejează împotriva valorilor neaprobate.
În acest moment, aplicația dvs. se va prăbuși, creând un potențial gateway în aplicația dvs. pentru hacker, care știe exact ce să facă în continuare.
Securizarea programului dvs. Exemplu
import java.util. InputMismatchException;
import java.util. Scanner;
public class Main {
// Funcția principală care execută programul și colectează cele două valori
public static void main (String [] args) {
încerca {
System.out.println ("Vă rugăm să introduceți cele două valori întregi:");
int valoare1;
valoare int2;
// folosind clasa de scaner pentru a citi fiecare intrare de la utilizator,
// și atribuie-i variabilei respective (aruncă o excepție dacă valorile nu sunt întregi)
Intrare scaner = Scanner nou (System.in);
valoare1 = input.nextInt ();
valoare2 = input.nextInt ();
// apelează funcția de adăugare și îi transmite cele două valori
adunare (valoare1, valoare2);
// închide fluxul de intrare după ce a ajuns la sfârșitul utilizării sale
input.close ();
// gestionează toate erorile aruncate în blocul try
} catch (InputMismatchException e) {
System.out.println ("Vă rugăm să introduceți o valoare întreagă validă.");
} catch (Exception e) {
System.out.println (e.getMessage ());
}
}
// funcția care colectează cele două valori și afișează suma acestora
adaos de gol privat static (int valoare1, int valoare2) {
int sum;
sumă = valoare1 + valoare2;
System.out.println ("Suma celor două valori întregi pe care le-ați introdus:" + sumă);
}
}
Codul de mai sus este sigur, deoarece efectuează tratarea excepțiilor. Prin urmare, dacă introduceți o valoare care nu este întreagă, programul se va termina corect în timp ce va produce următoarea linie de cod:
Vă rugăm să introduceți o valoare întreagă validă.
Ce este gestionarea excepțiilor?
În esență, gestionarea excepțiilor este versiunea modernă a gestionării erorilor, unde separați codul de gestionare a erorilor de codul normal de procesare. În exemplul de mai sus, tot codul normal de procesare (sau cod care poate genera o excepție) se află în încerca bloc, și tot codul de gestionare a erorilor se află în captură blocuri.
Dacă aruncați o privire mai atentă la exemplul de mai sus, veți descoperi că există două blocuri de captură. Primul ia un InputMismatchException argument; acesta este numele excepției care este aruncată dacă este introdusă o valoare neîntregă. Al doilea ia un Excepție argument, iar acest lucru este important, deoarece scopul său este de a surprinde orice excepție din cod pe care dezvoltatorul nu a găsit-o în timpul testării.
Legate de: Excepții Java: le tratezi corect?
Testarea codului dvs.
Nu trebuie să subestimați niciodată puterea de a testa și a testa din nou codul înainte de ambalare. Mulți dezvoltatori (și utilizatori ai aplicațiilor lor) găsesc noi erori după ce software-ul este disponibil publicului.
Testarea temeinică a codului dvs. vă va asigura că știți ce va face aplicația dvs. în fiecare scenariu posibil și vă va permite să vă protejați aplicația împotriva încălcării datelor.
Legate de: Cum să aterizați primul dvs. job de testare software
Luați în considerare exemplul de mai sus. Ce se întâmplă dacă, după finalizare, testați aplicația doar cu valori întregi? S-ar putea să vă îndepărtați de aplicație crezând că ați identificat cu succes toate erorile potențiale atunci când nu este cazul.
Faptul este că este posibil să nu puteți identifica toate erorile potențiale; acesta este motivul pentru care tratarea erorilor funcționează mână în mână cu testarea codului dvs. Testarea programului de mai sus arată că o eroare potențială va apărea într-un scenariu specific.
Cu toate acestea, dacă există o altă eroare care nu a apărut în timpul testării, al doilea bloc de captură din codul de mai sus îl va gestiona.
Securizarea bazei de date
Dacă aplicația dvs. se conectează la o bază de date, cel mai bun mod de a împiedica accesul la baza de date respectivă este să vă asigurați că toate aspectele aplicației dvs. sunt sigure. Cu toate acestea, ce se întâmplă dacă aplicația dvs. este proiectată cu singurul scop de a furniza o interfață la baza de date menționată?
Aici lucrurile devin puțin mai interesante. În forma sa de bază, o bază de date permite utilizatorului să adauge, să recupereze, să actualizeze și să șteargă date. Un sistem de gestionare a bazelor de date este o aplicație care permite utilizatorului să interacționeze direct cu o bază de date.
Majoritatea bazelor de date conțin date sensibile, prin urmare, pentru a menține integritatea și a limita accesul la aceste date, există o cerință de control al accesului.
Controlul accesului
Controlul accesului urmărește menținerea integrității unei baze de date prin definirea tipului de persoane care pot accesa o bază de date și restricționarea tipului de acces pe care îl au. Prin urmare, un sistem bun de gestionare a bazelor de date ar trebui să poată înregistra cine accesează baza de date, la ce oră și ce au făcut.
De asemenea, ar trebui să poată împiedica un utilizator înregistrat să acceseze sau să editeze date cu care nu este autorizat să interacționeze.
Securitatea software-ului este o abilitate crucială pentru toți dezvoltatorii
Dezvoltarea unui software bun este sinonim cu asigurarea faptului că software-ul dvs. poate rezista la orice atac rău intenționat. Acest lucru se poate realiza numai prin scrierea unui cod securizat, testarea continuă a unei aplicații și menținerea controlului asupra persoanelor care au acces la datele dvs.
Acum, că știți cum să vă securizați software-ul, vă recomandăm să aflați câteva etape de dezvoltare software.
Vă pregătiți să codificați primul dvs. program? Asigurați-vă că urmați acești pași cheie de dezvoltare software.
Citiți în continuare
- Programare
- Securitate cibernetică
- Sfaturi de codificare
Kadeisha Kean este un dezvoltator de software complet și scriitor tehnic / tehnologic. Are capacitatea distinctă de a simplifica unele dintre cele mai complexe concepte tehnologice; producând materiale care pot fi ușor de înțeles de către orice începător de tehnologie. Este pasionată de scriere, dezvoltarea de software-uri interesante și călătoria prin lume (prin documentare).
Aboneaza-te la newsletter-ul nostru
Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!
Încă un pas…!
Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.