Securitatea API este unul dintre cele mai importante aspecte de care trebuie să aveți grijă în aproape orice aplicație.
În zilele noastre, API-urile sunt cea mai bună modalitate de a vă integra aplicația cu alte aplicații. Acestea oferă o poartă către aplicația dvs. și, prin urmare, API-urile trebuie să fie suficient de sigure, astfel încât să nu primiți vizitatori nedoriți.
Să ne uităm la câteva vulnerabilități API care pot fi o amenințare pentru aplicația dvs.
Cuprins
Vulnerabilități comune ale API
#1. Cross-site scripting (XSS)
Atacurile XSS sunt frecvente în aplicațiile web, dar pot apărea și prin intermediul API-urilor dacă datele primite ale utilizatorului nu sunt igienizate corespunzător. Atacatorii pot rula scripturi rău intenționate pe server și pot avea acces la date sensibile.
#2. Încălcarea limitării ratei
Încălcarea funcției de limitare a ratei a API-ului poate oferi atacatorilor șansa de a vă bombarda serverul cu un număr mare de solicitări. În cele din urmă, serverul s-ar putea prăbuși, iar baza dvs. de clienți ar putea avea dificultăți să vă contacteze.
#3. Autentificare necorespunzătoare
Dacă API-ul nu este configurat corespunzător folosind o metodă de autentificare fiabilă, orice terță parte vă poate accesa sistemul prin intermediul API-ului. Autorizarea este, de asemenea, importantă deoarece definește cine poate accesa ce resursă API până la o anumită perioadă de timp.
#4. Transmiterea datelor nesigure
Datele care sunt trimise consumatorilor API-ului dvs. trebuie să fie criptate pe drum. Dacă nu este, atunci există șanse ca datele să fie scurse de atacatori care folosesc un atac de tip man-in-the-middle. De aceea, este întotdeauna recomandat să utilizați un protocol securizat, cum ar fi HTTPS, pentru a transmite date.
#5. Dependențe învechite/învechite
API-urile au o mulțime de dependențe externe care sunt folosite pentru a efectua sarcini complexe și pentru a descărca o logică complexă. Dacă aceste dependențe au o vulnerabilitate, atunci indirect, API-ul tău devine și el vulnerabil. Asigurați-vă întotdeauna că actualizați versiunile de dependență.
Acum că cunoașteți vulnerabilitățile API-ului, să ne uităm la câteva dintre cele mai bune practici pentru a vă securiza API-ul.
Citește și: Cele mai bune alternative pentru poștaș pentru testarea API-ului pentru dezvoltatori
Securitate API – Cele mai bune practici
Versiune API
Este esențial să monitorizați și să actualizați în mod regulat API-urile cu dependențe actualizate, deoarece aceste dependențe pot conține vulnerabilități majore. Puteți notifica utilizatorii API lansând o versiune de patch a API-ului conform versiunea semantică.
Menținerea actualizată a API-ului este cel mai puțin pe care puteți face pentru a preveni exploatarea acestuia de către atacatori.
Autentificare
Există o mulțime de moduri prin care puteți autentifica un utilizator API. Cel mai simplu mod este să utilizați abordarea nume de utilizator/parolă, dar aceasta este prea simplă și se bazează doar pe cât de puternică este parola.
O altă modalitate este să utilizați cheile API pentru a accesa API-ul. Puteți oferi fiecărui utilizator API o cheie unică pe care o poate folosi.
Autentificarea JWT este o tehnică în care acreditările utilizatorului sunt convertite într-un token semnat digital și apoi trimise utilizatorului. Apoi utilizatorul trimite același token înapoi la fiecare cerere către server pentru ca acesta să o valideze. JWT-urile au și un timp de expirare.
Cea mai eficientă soluție este OAuth. Permite accesul terților la API cu acreditările de conectare deja existente. De exemplu, dacă sunteți deja conectat la Google, o aplicație poate folosi acele acreditări pentru a vă conecta la contul dvs. fără a avea nevoie de o parolă. Contul dvs. Google devine parola.
Autorizare
Autorizarea este un lucru diferit de autentificare. În timp ce autorizați un utilizator, acesta este deja autentificat să utilizeze API-ul dvs. și este doar resursa API pe care o poate accesa.
De exemplu, un profesor universitar poate avea acces la toți studenții dintr-un lot, dar un singur student poate accesa doar datele lor. În acest caz, studentul și profesorul sunt autentificați în același sistem, dar sunt autorizați doar să facă anumite acțiuni.
Asigurarea că autorizarea API funcționează bine poate împiedica accesul neautorizat la o resursă.
Redactarea datelor
Redactarea datelor este procesul de dezvăluire selectivă a informațiilor către utilizatori și de protejare a informațiilor sensibile. Autorizarea corespunzătoare poate duce la o mai bună redactare a datelor. Reglementările privind confidențialitatea datelor, cum ar fi GDPR, se bazează, de asemenea, pe redactarea datelor. Orice terță parte nedorită ar trebui să nu poată arunca o privire asupra datelor personale sau sensibile.
Puteți implementa reacția datelor prin implementarea unui middleware sau a unui manager de gateway.
Criptare
Acesta a devenit cel mai important control de securitate din lumea de astăzi. Criptarea este o necesitate dacă aveți de-a face cu orice fel de informații sensibile. Cea mai mică criptare pe care o puteți face este să utilizați protocolul HTTPS, care utilizează protocolul TLS (Transport Layer Security) și SSL (Secure Socket Layer).
Criptarea end-to-end este o altă modalitate de a securiza strâns datele în tranzit. Datele care sunt stocate în baza de date ar trebui, de asemenea, să fie criptate în cazul în care un atacator ar putea pătrunde în baza de date și poate accesa datele.
Eroare de manipulare
Informațiile despre infrastructura aplicației pot fi divulgate atacatorilor prin mesaje de eroare detaliate. Pentru a evita acest lucru, păstrați mesajele de eroare generice și implementați gestionarea personalizată a erorilor. Asigurați-vă că nu sunt înregistrate informații sensibile de sistem în detaliile erorii.
Validarea intrărilor și igienizarea datelor
Validarea intrărilor este extrem de crucială atunci când aveți de-a face cu API-uri, deoarece nu cunoașteți intrarea până când utilizatorul o trimite.
Sanitizarea este procesul de eliminare a oricărui cod executabil nedorit din încărcătura utilă. Un atacator poate introduce un script Javascript, iar dacă nu îl dezinfectați înainte de a-l transmite în HTML, acesta va fi executat ca script și va prelua date.
Dezinfectarea necorespunzătoare poate duce la atacuri Cross-site scripting (XSS).
Sisteme de detectare a intruziunilor
Cunoscute și sub numele de IDS, sistemele de detectare a intruziunilor ajută la monitorizarea și detectarea traficului de rețea care vine la API. Dacă găsește vreun comportament neobișnuit în trafic, poate înregistra și alerta autoritățile în cauză.
În general, există două tipuri de sisteme: bazate pe rețea și bazate pe gazdă. În sistemele bazate pe rețea, sistemul este distribuit între diferite puncte de control pentru a monitoriza traficul în mai multe puncte. Într-un sistem bazat pe gazdă, acesta este implementat pe o singură gazdă.
Astfel de sisteme sunt o modalitate excelentă de a determina cine încearcă să vă acceseze rețeaua înainte de a vă împiedica datele.
Lista albă IP
Lista albă IP este o modalitate de a permite numai adreselor IP selectate să acceseze API-ul și rețeaua dvs. Este posibil ca această tehnică să nu funcționeze dacă aveți un API public, deoarece este prea complex să enumerați fiecare IP.
Este benefic dacă știi că doar unele dintre aplicațiile sistemelor vor accesa API-ul tău.
Jetoane web JSON
JWT-urile sunt, în general, folosite pentru a autentifica un utilizator, trimițându-i utilizatorului un token semnat digital creat din acreditările sale. Funcționează deoarece ascunde acreditările reale ale utilizatorului și, de asemenea, nu trebuie să stocați acreditările în baza de date sau pe partea utilizatorului.
JWT poate fi împărțit în trei secțiuni: antet, sarcină utilă și semnătură. Secțiunea de încărcare utilă conține acreditările utilizatorului, iar antetul poate conține informații precum algoritmul utilizat. Secțiunea de semnătură este semnată digital de server și client la fiecare cerere ulterioară.
JWT-urile au în general o dată de expirare, după care un nou token este generat de server și apoi trimis utilizatorului.
Înregistrare și monitorizare
Monitorizarea traficului către API-ul dvs. poate fi benefică pentru a detecta și a identifica în prealabil vizitatorii nedoriți. Puteți monitoriza fiecare cerere, dar asigurați-vă că jurnalele nu conțin informații sensibile.
Limitare de rata
Dacă un API nu implementează limitarea ratei, este vulnerabil la atacurile DDoS din cauza afluxului neașteptat de trafic de rețea. Atacatorii pot inunda sistemul cu un număr mare de solicitări într-o perioadă scurtă de timp, în cele din urmă blocând serverul.
API-urile de limitare și limitare a ratei evită atacurile de refuzare a serviciului prin restricționarea fluxului de trafic API.
Dependențe sigure
Vulnerabilitățile nu apar numai din codul dvs. API, ele pot face, de asemenea, parte din orice dependențe terțe pe care le utilizați în API. De aceea, este important să monitorizați și să vă scanați în mod regulat dependențele și să detectați orice vulnerabilități care ar putea fi prezente în ele.
Puteți implementa o lucrare programată pentru a scana și actualiza în mod regulat dependențele, dacă acestea pot fi actualizate cu o versiune de corecție care remediază vulnerabilitatea. De asemenea, alegeți dependențe care sunt mai sigure și oferă actualizări de securitate frecvente.
Antetele de securitate ar trebui returnate împreună cu răspunsul API pentru a instrui browserul despre securitatea API și cum ar trebui să acționeze. Anteturile importante pe care le puteți trimite pentru a îmbunătăți securitatea sunt:
- Cache-Control: Setați-l pe no-store pentru a evita stocarea informațiilor sensibile în browser.
- Politica de securitate a conținutului: setarea acestuia la „niciunul” pentru strămoși cadru evită încadrarea răspunsurilor API într-un iframe.
- Content-Type: acest antet este important deoarece fără el, browserul încearcă să ghicească tipul de răspuns API și poate duce la atacuri sniffing. Pentru răspunsul JSON, îl puteți seta la application/json.
- X-Content-Type-Options: Setați-l la nosniff pentru a indica browserului să nu ghicească tipul MIME al răspunsului și să-l caute numai în antetul Content-Type.
Standarde și cadre de securitate
Proiectați-vă API-ul cu ajutorul standardelor și cadrelor de securitate predefinite pentru a vă asigura că API-ul dvs. este la zi cu cele mai recente considerente de securitate.
Expirarea simbolului
Dacă utilizați jetoane purtătoare, timpul de expirare a jetonului ar trebui să fie de scurtă durată, deoarece necesită re-autentificarea utilizatorului, ceea ce este un lucru bun. În JWT, există de obicei două jetoane: jetoane de acces și reîmprospătare. Token-urile de reîmprospătare sunt de lungă durată, în timp ce jetoanele de acces sunt de scurtă durată. În orice caz, jetoanele dvs. ar trebui să aibă un timp de expirare.
Firewall aplicație web
Un WAF, alias Web Application Firewall, este o poartă care monitorizează, filtrează și blochează orice trafic de rețea rău intenționat. Este adesea cea mai bună modalitate de a preveni atacurile rău intenționate prin protocolul HTTP.
Utilizarea API Gateways
Dacă doriți să configurați cu ușurință securitatea API și să gestionați rutele API și accesul acestora, puteți alege gateway-uri API. De asemenea, oferă instrumente de monitorizare, înregistrare și analiză, pe care le puteți utiliza pentru a vă monitoriza API-ul.
Încredere zero
Ideea din spatele strategiei zero-trust este să nu ai încredere în nicio sursă centralizată. Securitatea ar trebui să fie stratificată și implementată la mai multe puncte de control.
Practic, nimeni nu poate fi de încredere, chiar și dezvoltatorii care lucrează la API. Fiecare gateway ar trebui monitorizat și analizat pentru a preveni încălcările de securitate.
Automatizarea este utilă în astfel de cazuri. Puteți utiliza instrumente automate pentru a monitoriza și a bloca în mod regulat activitățile neobișnuite sau suspecte.
Cuvinte finale
Nu puteți face decât atât pentru a vă menține API-urile în siguranță. Există întotdeauna câteva lacune în software care pot fi exploatate. Astfel de lacune duc la vulnerabilități zero-day. Deci, pentru a vă securiza API-urile, cel mai puțin pe care puteți face este să le mențineți actualizate cu cele mai recente standarde de securitate.
Aruncă o privire la cele mai bune instrumente de testare dinamică a securității aplicațiilor.