Transformarea unui clic într-o regulă temporară de firewall este comodă și, în același timp, construiește un sistem de autorizare care decide cine poate ajunge la un serviciu. Emite o adresă, nu o persoană, iar diferența contează din momentul în care două persoane partajează un NAT. Limitați domeniul autorizării, confirmați-o deliberat și dați un sens expirării înainte de a se construi legătura. Decizia din fața dumneavoastră este unde se pune granița, nu dacă ar trebui să existe una.

Decideți la ce întrebare răspunde autorizarea

Începeți de la cerință. Dacă o persoană anume trebuie să ajungă la serviciu și aplicația autentifică deja acea persoană, o poartă autentificată păstrează identitatea în punctul de aplicare și nu are deloc nevoie de admiterea adresei. Dacă ținta este un agent de construire, un port de salt administrativ sau un aparat care nu poate participa la autentificarea utilizatorului, o autorizare de adresă cu domeniu restrâns poate fi singurul control practic disponibil.

Alegerea admiterii pe adresă pentru o aplicație orientată spre utilizatori mută problema reală de autorizare în altă parte, iar portalul moștenește apoi vina pentru o breșă pe care nu a închis-o niciodată.

Limitați cererea pe server

Browserul nu trebuie să aleagă destinația, portul sau prefixul. Portalul rezolvă serviciul din propriile înregistrări și verifică dreptul cu un test pe partea de server, ceea ce este același principiu pe care ghidul de autorizare al OWASP îl aplică fiecărei cereri. Derivarea adresei aparține tot graniței protejate: când un proxy invers raportează adresa clientului, acceptați doar lanțul de proxy configurat și tratarea documentată a antetelor. Un antet de redirecționare furnizat de un vizitator este o afirmație despre proveniență, nu o dovadă a acesteia.

Apoi verificați dacă portalul și serviciul văd aceeași sursă. Tunelul divizat, un salt de proxy și IPv4 față de IPv6 pot da două destinații două adrese diferite, așa că o autorizare activată pe o cale poate să nu acopere cererea următoare.

Arătați autorizarea înainte de a o instala

Deschiderea unei legături ar trebui să afișeze serviciul propus, sursa observată și durata și să nu schimbe încă nimic. Acel singur pas transformă legătura din e-mail dintr-o acțiune într-o propunere și împiedică un bot de previzualizare sau un scaner de e-mail să acorde acces doar preluând-o.

Confirmarea ar trebui să fie o cerere care schimbă starea, cu apărările obișnuite împotriva site-urilor încrucișate și a originii. Tokenul ar trebui să fie de unică folosință și consumat atomic în momentul instalării regulii, iar înregistrarea ar trebui să rețină proprietarul, serviciul, adresa, identificatorul autorizării și expirarea fără a înregistra vreodată tokenul brut.

Livrarea tokenului merită aceeași grijă ca regula în sine. O legătură expirată sau deja consumată care încă produce o regulă este o a doua ușă montată cu aceeași cheie.

Adresa este partajată chiar în timp ce autorizarea este valabilă

Un NAT de birou, un NAT de operator și o ieșire VPN partajată pun fiecare mai multe persoane în spatele unei adrese. Admiterea acelei adrese admite pe toți cei din spatele ei — în ce privește următoarea graniță a serviciului —, fără a dovedi nimic despre cine deține contul pe care serviciul îl așteaptă.

Nici eliminarea regulii nu este o deconectare universală. Conexiunile stabilite, tokenurile de aplicație din cache și sesiunile de lungă durată pot supraviețui regulii minute sau mult mai mult, așa că durata de viață pe care o alegeți ar trebui să reflecte ce face serviciul după admitere, nu doar cât timp există regula.

Testați patru cazuri și ambele familii de adrese

O autorizare valorează cât cele patru cazuri pe care le supraviețuiește: o cerere nouă permisă, un solicitant neaprobat, o reluare a aceleiași legături și aceeași cerere după expirare.

Apoi testați fiecare familie separat, deoarece adresa sursă pe care o observă serviciul poate diferi între ele.

dig +short A service.example.com
dig +short AAAA service.example.com
curl -4 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
curl -6 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com

Rezultatul util este o decizie de admitere temporară și auditabilă sub autorizarea normală a utilizatorului, în locul unei deschideri permanente care poartă numele celui care a dat clic primul.

Articole similare