dacă, la fel ca aproximativ 10 milioane de alți oameni, sunteți dezvoltator Java, probabil că doriți să știți cum să păstrați codul Java în siguranță. Dezvoltatorii vor trebui întotdeauna să rămână la curent cu sfaturile și cele mai bune practici pentru a aborda problemele de securitate Java.
Java este cel mai popular limbaj de programare de astăzi, cu un motiv bun. Codul Java este cross-platform. Programarea Java este predată pe scară largă în departamentele universitare de informatică. Atât de mulți programatori dornici de ochi intră în primele lor locuri de muncă gata să codifice în Java. Iar designul orientat pe obiecte al Java simplifică reutilizarea codului.cu toate acestea, în ciuda popularității Java, ați fi greu să găsiți pe cineva care să susțină că Java este cel mai sigur limbaj de programare de acolo. Problemele de securitate Java sunt reale. Java a fost conceput pentru a fi la fel de sigur ca majoritatea celorlalte limbaje de programare populare și oferă funcții precum SecurityManager pentru a ajuta la îmbunătățirea securității în anumite contexte. Cu toate acestea, aplicațiile Java sunt supuse unui număr de potențiale vulnerabilități de securitate, inclusiv, dar fără a se limita la, diverse atacuri de injecție.
este crucial pentru dezvoltatorii și administratorii Java să țină cont de vulnerabilitățile comune de securitate Java pe măsură ce scriu și implementează aplicații Java. Programarea în primul rând a securității este deosebit de importantă în cazul Java, deoarece natura cross-platform a Codului Java înseamnă că cadrele de securitate la nivel de sistem de operare nu pot fi întotdeauna de încredere pentru a menține aplicațiile în siguranță.
nici nu trebuie să vă așteptați ca utilizatorii finali să poată gestiona eficient amenințările de securitate Java. Sigur, puteți da vina pe utilizatorii dvs. pentru că rulează cod Java de încredere sau dezactivează actualizările automate ale rulărilor Java, dar, în cele din urmă, sarcina de a scrie aplicații Java sigure și de a izola codul într-un mediu Java care ar putea să nu fie sigur revine dezvoltatorilor.
probleme comune de securitate Java
programatorii Java ar trebui să țină cont de următoarele provocări de securitate atunci când proiectează și scriu aplicații Java.
injecții SQL
injecțiile SQL apar atunci când un atacator introduce cod de interogare SQL rău intenționat într-un formular. Dacă aplicația nu reușește să detecteze codul rău intenționat și îl transmite într-o bază de date, Baza de date ar putea fi modificată într-un mod dăunător sau datele sensibile ar putea fi expuse părților neautorizate.proliferarea instrumentelor automate pentru injecțiile SQL face ca atacurile SQL injection să fie o provocare de securitate larg răspândită pentru aplicațiile Java și, de altfel, practic orice alt tip de aplicație care s-ar putea conecta la o bază de date astăzi.
soluția la atacurile SQL injection în Java este destul de simplă: Asigurați-vă că aplicația validează corect datele introduse și împiedică adăugarea de coduri rău intenționate la datele deja acceptate într-un formular. Ca regulă generală și acolo unde este posibil, evitați interogările dinamice pentru a atenua riscul injecțiilor SQL în aplicațiile Java. Clasa Java PreparedStatement poate fi, de asemenea, utilă pentru prevenirea atacurilor SQL.
injecții Java LDAP
atacurile de injecție care exploatează declarațiile Lightweight Directory Access Protocol (LDAP) reprezintă un alt atac comun asupra aplicațiilor Java. Aici, din nou, validarea intrării este cheia prevenirii atacurilor.
în special, dezvoltatorii Java pot contracara majoritatea tipurilor de atacuri de injecție LDAP dacă scapă de caractere speciale LDAP.
alte tipuri de atacuri de injecție Java
am acoperit deja injecțiile SQL și injecțiile LDAP, dar atacurile de injecție în aplicațiile Java nu se termină aici. Injecțiile cu șiruri de conexiune, injecțiile cu scripturi între site-uri (XSS) și alte tipuri de atacuri sunt toate posibile.
aceste tipuri de atacuri nu se aplică tuturor aplicațiilor Java-XSS este într-adevăr doar un risc serios cu aplicațiile web, de exemplu-dar sunt un alt memento de ce validarea intrărilor este atât de importantă.securitymanager vulnerabilități SecurityManager este proiectat astfel încât să puteți rula bytecode untrusted în siguranță, în aplicații Java. SecurityManager cutii de nisip bytecode, în scopul de a preveni atacurile.
Acest lucru face SecurityManager o resursă excelentă pentru securitatea Java-cu condiția, desigur, că funcționează corect. Principalul risc al SecurityManager este Istoricul vulnerabilităților de securitate care au apărut în cadrul SecurityManager în sine. Aceste vulnerabilități permit uneori codului izolat să iasă din sandbox și să execute atacuri.
într-o anumită măsură, gestionarea problemelor de securitate SecurityManager și Java este o problemă nu pentru dezvoltatori, ci pentru administratorii de sistem, care trebuie să țină la zi timpul de rulare Java. Cu toate acestea, dezvoltatorii își pot face partea și pot evita cutiile de nisip atunci când este posibil. Cu alte cuvinte, nu aveți încredere orbește în SecurityManager. Dacă trebuie să o utilizați într-o aplicație, utilizați-o. Dar dacă puteți obține funcționalitatea de care aveți nevoie fără ea, atenuați riscurile de securitate Java și evitați-o.
Borcane rău intenționate
când o aplicație Java încarcă borcane în timpul rulării, uneori, un hacker poate păcăli aplicația să conecteze Borcane rău intenționate. Aceasta este o problemă veche de securitate, iar Java a introdus o serie de verificări de-a lungul anilor pentru a ajuta la prevenirea acesteia.
unele dintre aceste caracteristici de atenuare a atacurilor acționează de la sine, dar dezvoltatorii pot profita din plin de ele semnând Borcane. În acest fel, semnăturile sunt verificate în timpul rulării și împiedică intruziunile. Programatorii pot, de asemenea, să atenueze amenințarea reprezentată de borcanele rău intenționate prin restricționarea privilegiilor de acces ale anumitor clase, astfel încât, dacă codul rău intenționat este încărcat, politicile naturale de securitate vor limita daunele pe care le poate face codul rău intenționat.