19 Cele mai bune practici de securitate API pentru a implementa și a rămâne în siguranță

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.

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ă.

  Cum să obțineți rețete DIY cu sirene de la Pascal în „Animal Crossing: New Horizons”

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.

  Cum să redați în flux muzică gratuită cu Amazon Prime

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.

  Administrare supremă a serverelor VPS cu SPanel

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.