În calitate de programator sau dezvoltator, importanța creării de aplicații sigure nu poate fi trecută cu vederea.
Securitatea software abordează gestionarea atacurilor rău intenționate prin identificarea potențialelor vulnerabilități în software și luând măsurile de precauție necesare pentru a le proteja.
Software-ul nu poate fi niciodată 100% sigur, deoarece dezvoltatorii pot ignora o eroare, pot introduce erori noi în timp ce le repară pe cele existente sau pot introduce noi vulnerabilități prin actualizări.
Cu toate acestea, există două metode principale pe care toți dezvoltatorii de software le pot folosi pentru a se asigura că creează software securizat. Este vorba despre scrierea codului securizat de la început și testarea eficientă a codului.

Securitatea software-ului joacă un rol extrem de important
Cum se scrie codul securizat
Scrierea codului securizat are un singur lucru de făcut - gestionarea erorilor. Dacă puteți anticipa fiecare valoare potențială pe care utilizatorul o poate oferi aplicației și puteți genera un răspuns în program 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 necesită aplicația dvs. pentru a efectua o sarcină (valori aprobate) și să înțelegeți că orice alte valori care pot exista sunt valori neaprobate.
Scrieți codul securizat
Să presupunem că doriți să creați un program care acceptă doar două valori întregi de la utilizator și care efectuează o operație de adăugare asupra acestora. În calitate de 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 care este sarcina pe care o va îndeplini acest program (o operație de adăugare).
Exemplu de creare a unui program în 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);
}
}
Codul de mai sus creează o aplicație care corespunde exact cerințelor. Când este executat, va produce următoarea linie în consolă:
Please enter your two integer values:
Aplicația va rămâne apoi întreruptă până când utilizatorul introduce două valori întregi în consolă (adică introduceți prima valoare, apăsați tasta Enter și repetați).
Dacă utilizatorul introduce valorile 5 și 4 în consolă, programul produce următoarea ieșire:
The sum of the two integer values you entered: 9
Grozav. Programul face exact ceea ce ar trebui să facă. Cu toate acestea, dacă intră un utilizator nefast și introduce o valoare non-întreg, cum ar fi „g”, în aplicația dvs., va apărea o problemă. Acest lucru se datorează faptului că în aplicație nu există niciun cod care să protejeze împotriva valorilor neaprobate.
În acest moment, aplicația dvs. se va prăbuși, creând o potențială gateway în aplicația dvs., astfel încât hackerii să știe exact ce trebuie să facă în continuare.
Exemplu de securitate a programului
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);
}
}
Codul de mai sus este sigur deoarece efectuează gestionarea excepțiilor. Prin urmare, dacă introduce��i o valoare care nu este întreagă, programul va genera următoarea linie de cod:
Please enter a valid integer value.
Ce este gestionarea excepțiilor?
![De ce este securitatea software o abilitate pe care ar trebui să o aibă toți programatorii? De ce este securitatea software o abilitate pe care ar trebui să o aibă toți programatorii?]()
Tratarea excepțiilor
În esență, gestionarea excepțiilor este versiunea modernă a gestionării erorilor, în care separă codul de gestionare a erorilor de codul obișnuit de gestionare. În exemplul de mai sus, tot codul normal de gestionare (sau codul potențial care cauzează excepții) este în blocul try și tot codul de gestionare a erorilor este în blocul catch.
Dacă te uiți mai atent la exemplul de mai sus, vei vedea că există două blocuri de captură. Primul primește un argument InputMismatchException - acesta este numele excepției aruncate dacă este introdusă o valoare care nu este întreagă. Al doilea preia argumentul Excepție , iar acest lucru este important deoarece scopul său este de a găsi orice excepții în cod pe care dezvoltatorul nu le-a găsit în timpul testării.
Verificați codul
Nu ar trebui să subestimați niciodată puterea testării și retestării codului. Mulți dezvoltatori (și utilizatori de aplicații) găsesc erori noi după ce software-ul este pus la dispoziție publicului.
Testarea amănunțită a codului vă asigură că știți ce va face aplicația dvs. în fiecare situație imaginabilă și vă permite să o protejați de încălcarea datelor.
Luați în considerare exemplul de mai sus. Ce se întâmplă dacă, odată finalizată, testați aplicația doar cu valori întregi? Puteți părăsi aplicația crezând că ați identificat cu succes toate erorile potențiale, când de fapt nu ați făcut-o.
Realitatea este că este posibil să nu puteți identifica toate erorile potențiale. Acesta este motivul pentru care gestionarea erorilor funcționează în tandem cu testarea codului dvs. Testarea programului de mai sus dezvăluie o eroare potențială care va apărea într-o anumită situație.
Cu toate acestea, dacă există o altă eroare care nu a apărut în timpul testării, atunci al doilea bloc catch din codul de mai sus o va gestiona.
Securitatea bazei de date
Dacă aplicația dvs. se conectează la o bază de date, cea mai bună modalitate de a preveni accesul la acea bază de date este să vă asigurați că toate aspectele aplicației sunt securizate. Cu toate acestea, ce se întâmplă dacă aplicația dvs. este proiectată cu unicul scop de a oferi o interfață pentru baza de date menționată?
Aici lucrurile devin puțin mai interesante. În forma sa cea mai de bază, bazele de date permit utilizatorilor să adauge, să recupereze, să actualizeze și să șteargă date. Un sistem de gestionare a bazelor de date este o aplicație care permite utilizatorilor 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ță - controlul accesului.
Controlul accesului
Controlul accesului urmărește să mențină integritatea bazei de date prin determinarea tipurilor de persoane care pot accesa baza de date și restricționarea tipului de acces pe care îl au. Prin urmare, un sistem bun de gestionare a bazelor de date trebuie să poată înregistra cine a accesat baza de date, când și ce a făcut.
De asemenea, poate împiedica utilizatorii înregistrați să acceseze sau să editeze date cu care nu sunt autorizați să interacționeze.