Vieno paspaudimo pavertimas laikinąja ugniasienės taisykle yra patogu, ir tai kartu sukuria autorizacijos sistemą, kuri nusprendžia, kas gali pasiekti paslaugą. Ji išduoda adresą, o ne asmenį, ir šis skirtumas tampa svarbus tą akimirką, kai du žmonės dalijasi vienu NAT. Apribokite leidimo apimtį, patvirtinkite jį sąmoningai ir suteikite galiojimo pabaigai prasmę prieš sukuriant nuorodą. Sprendimas priešais jus yra kur padėti ribą, o ne ar ji apskritai turėtų egzistuoti.

Nuspręskite, į kokį klausimą atsako leidimas

Pradėkite nuo reikalavimo. Jei įvardytas asmuo turi pasiekti paslaugą ir programa jau autentifikuoja tą asmenį, autentifikuoti vartai išlaiko tapatybę vykdymo taške ir visiškai nereikalauja adreso įleidimo. Jei tikslas yra kūrimo agentas, administracinis šuolio prievadas ar įrenginys, kuris negali dalyvauti naudotojo prisijungime, ribotos apimties adreso leidimas gali būti vienintelė praktinė kontrolė.

Pasirinkus adreso įleidimą naudotojams skirtai programai, tikroji autorizacijos problema persikelia kitur, o portalas paveldi kaltę dėl spragos, kurios niekada neuždarė.

Apribokite užklausą serveryje

Naršyklė neturi pasirinkti paskirties, prievado ar priešdėlio. Portalas nustato paslaugą iš savo įrašų ir patikrina teisę serverio pusės testu, o tai yra tas pats principas, kurį OWASP autorizacijos gairės taiko kiekvienai užklausai. Adreso išvedimas taip pat priklauso saugomai ribai: kai atvirkštinis tarpinis serveris praneša kliento adresą, priimkite tik sukonfigūruotą tarpinių serverių grandinę ir jos dokumentuotą antraščių tvarkymą. Lankytojo pateikta persiuntimo antraštė yra teiginys apie kilmę, o ne jos įrodymas.

Tada patikrinkite, ar portalas ir paslauga mato tą patį šaltinį. Atskirtas tunelis, vienas tarpinio serverio šuolis ir IPv4 prieš IPv6 gali dviem paskirtims duoti du skirtingus adresus, todėl vienu keliu suaktyvintas leidimas gali neapimti kitos užklausos.

Parodykite leidimą prieš jį įdiegdami

Atidarius nuorodą turėtų būti rodoma siūloma paslauga, stebimas šaltinis ir trukmė, o kol kas nieko nekeisti. Šis vienas žingsnis paverčia el. paštu gautą nuorodą iš veiksmo į pasiūlymą ir neleidžia peržiūros robotui ar pašto skaitytuvui suteikti prieigos vien ją atsisiunčiant.

Patvirtinimas turėtų būti būseną keičianti užklausa su įprastomis apsaugomis nuo svetainių ir kilmės. Žetonas turėtų būti vienkartinis ir sunaudojamas atomiškai tą akimirką, kai įdiegiama taisyklė, o įrašas turėtų užfiksuoti savininką, paslaugą, adresą, leidimo identifikatorių ir galiojimo pabaigą niekada neregistruodamas neapdoroto žetono.

Žetono pristatymas nusipelno tokios pačios priežiūros kaip ir pati taisyklė. Pasibaigusio ar jau sunaudoto žetono nuoroda, kuri vis tiek sukuria taisyklę, yra antros durys su tuo pačiu raktu.

Adresas bendrinamas net tada, kai leidimas galioja

Biuro NAT, operatoriaus NAT ir bendras VPN išėjimas kiekvienas pastato kelis žmones už vieno adreso. Įleisti tą adresą reiškia įleisti visus už jo — kiek tai susiję su kita paslaugos riba —, nieko neįrodant apie tai, kas turi paskyrą, kurios tikisi paslauga.

Taisyklės pašalinimas taip pat nėra universalus atjungimas. Nustatyti ryšiai, podėlyje saugomi programos žetonai ir ilgai trunkantys seansai gali pergyventi taisyklę minutes arba daug ilgiau, todėl pasirinkta gyvavimo trukmė turėtų atspindėti, ką paslauga daro po įleidimo, o ne tik kiek laiko egzistuoja taisyklė.

Išbandykite keturis atvejus ir abi adresų šeimas

Leidimas vertas tiek, kiek atlaiko keturis atvejus: nauja leidžiama užklausa, nepatvirtintas prašytojas, tos pačios nuorodos kartojimas ir ta pati užklausa pasibaigus galiojimui.

Tada išbandykite kiekvieną šeimą atskirai, nes šaltinio adresas, kurį stebi paslauga, gali skirtis tarp jų.

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

Naudingas rezultatas yra laikinas, audituojamas įleidimo sprendimas pagal įprastą naudotojo autorizaciją, o ne nuolatinis atvėrimas, nešantis pirmojo spragtelėjusio vardą.

Susiję straipsniai