Skript auth-user-pass-verify ta’ OpenVPN: il-kodiċi tal-ħruġ it-tajjeb
L-istat tal-ħruġ tal-hook huwa d-deċiżjoni, mhux il-linja tal-log tiegħu. Immappja r-riżultati tal-verifikatur għal 0, 1 jew pospost, aqra l-fajl tal-kredenzjali bħala data u iffalli magħluq.
OpenVPN jaġixxi fuq eżattament output wieħed ta’ skript tal-login: l-istat tal-ħruġ. Kull ħaġa oħra li tagħmel l-iskript hija dekorazzjoni. Hook jista’ jasal għall-verifikatur it-tajjeb, janalizza r-risposta u jipprintja linja ħbiba filwaqt li jirritorna stat li jfisser l-oppost ta’ dak li kien beħsieb l-awtur tiegħu. Aqra l-kuntratt l-ewwel u ikteb l-adapter madwaru, u dik il-klassi kollha ta’ buggijiet tisparixxi.
Il-kuntratt huwa żgħir: identifika l-kont li ġie sottomess, staqsi lill-verifikatur approvat il-mistoqsija maħsuba u aċċetta biss ir-riżultat pożittiv dokumentat ta’ dak il-verifikatur għal dik it-talba. Kull ħaġa oħra hija infrastruttura.
It-tliet stati li l-hook jista’ jirritorna
Għal auth-user-pass-verify, il-manwal ta’ OpenVPN 2.6 jiddefinixxi l-kodiċi tal-ħruġ 0 bħala aċċettazzjoni, 1 bħala rifjut u 2 bħala awtentikazzjoni posposta. Dawn huma l-uniċi tliet tweġibiet li jifhem is-server, u kull waħda għandha konsegwenza differenti għall-konnessjoni. Skript li joħroġ bl-istat tal-aħħar kmand tiegħu fil-fatt ħalla sejħa tal-log jew pass ta’ tindif jivvota. Ikteb l-istat b’mod espliċitu f’kull fergħa, inklużi l-fergħat li qatt ma waslu għall-verifikatur.
Is-suċċess tal-HTTP u s-suċċess tal-awtentikazzjoni huma saffi separati, u li tħallathom hija l-aktar mod komuni kif dan il-hook jiżbalja. Risposta 202 tfisser li t-talba ġiet aċċettata għall-ipproċessar, mhux li password ġiet verifikata. Iddefinixxi l-istat mistenni, il-forma tar-risposta u l-verdett finali mill-kuntratt tal-API li ngħatajt, u tixtarx isem ta’ qasam għax jidher plawsibbli.
Jekk it-tweġiba tassew tasal aktar tard, dak huwa l-mogħdija posposta u trid tinbena hekk. Tentattiv pospost li qatt ma jitlesta jżomm riżorsi sakemm jiskadi l-limitu ta’ żmien.
Aqra l-fajl tal-kredenzjali eżatt kif inhu miktub
Bil-metodu dokumentat permezz ta’ fajl, is-server jikteb l-isem tal-utent u l-password bħala l-ewwel żewġ linji ta’ fajl temporanju, jgħaddi dik il-mogħdija lill-iskript u jneħħi l-fajl meta l-iskript jerġa’ lura. Aqra dawk iż-żewġ linji bħala data: qatt tagħmel source tal-fajl, qatt tevalwah u qatt tpejjipx il-kontenut tiegħu f’linja tal-kmand fejn it-tabella tal-proċessi tista’ tarah. Ippreserva l-password bajt b’bajt, għax in-normalizzazzjoni, kif tagħmel ma’ isem tal-utent, tbiddel il-kredenzjali bil-moħbi. Id-direttorju għal dak il-fajl temporanju hija deċiżjoni tal-varar, għalhekk ikkonferma li jeżisti u li mhuwiex qari għal kulħadd fuq il-host.
Żomm il-kredenzjali tal-verifikatur innifsu separati minn dawk tal-utent: huma jappartjenu għall-integrazzjoni tal-gateway, jgħixu fil-maħżen tas-sigrieti tal-pjattaforma u jeħtieġu biss il-permess biex jivverifikaw, għalhekk mhumiex prova li persuna partikolari ġiet awtentikata. Tħallix lill-hook isir it-tieni verifikatur tal-passwords lanqas. L-implimentazzjoni mill-ġdid manwali ta’ paragun tal-hash ma ssirx sigura billi tiffaċilita l-linja, u verifikatur mantenut diġà jifhem l-iskema mielħa u għalja tal-maħżen tal-kontijiet.
Iddeċiedi xi jfisser tweġiba li ma tistax tiġi kklassifikata
Il-limiti ta’ żmien, l-iżbalji tat-trasport, ir-risposti mċappsa u backend mhux disponibbli jaqsmu propjetà waħda: ħadd minnhom mhu verifika pożittiva. Il-hook għandu jfalli magħluq għal kull wieħed minnhom u jirreġistra raġuni li operatur jista’ jaġixxi fuqha. Dik ir-raġuni tappartjeni għal log protett, mhux għal messaġġ li jintbagħat lura lill-persuna li qed tipprova tikkonnettja.
Kun daqstant attent bil-mogħdijiet li lanqas biss jilħqu l-verifikatur. Valur tal-konfigurazzjoni neqsin, sigriet mhux qari jew dipendenza mhux installata għandhom jipproduċu rifjut b’markatur operattiv distint minflok aċċettazzjoni aċċidentali. Ittestja dawk il-fergħat billi tneħħi d-dipendenza f’laboratorju minflok tirraġuna dwarhom. Fejn falliment fil-log jista’ jibdel l-istat tal-ħruġ, il-log sar parti mid-deċiżjoni u jrid isir bla ħsara.
Il-konfigurazzjoni tas-server hija importanti hawn ukoll: skripts definiti mill-utent huma rispettati biss meta l-konfigurazzjoni li qed taħdem tippermettihom fil-livell ta’ sigurtà meħtieġ, u dik is-setting hija għażla deliberata u mhux valur prestabbilit li għandu jogħla.
Ivverifika l-verdett, mhux il-linja stampata
Ibni test li jispezzjona l-istat tal-ħruġ direttament. Ikteb fajl tal-kredenzjali kampjun, agħmel il-hook kontrih bi kont magħruf tajjeb u kont magħruf ħażin, u aqra l-istat li jirrapporta l-qoxra minflok it-test li jipprintja l-iskript. Dik il-verifika waħda taqbad il-biċċa l-kbira tal-buggijiet tal-kuntratt qabel ma klijent qatt jikkonnettja.
Imbagħad agħmel l-istess każijiet permezz ta’ klijent veru kontra semmiegħ mhux tal-produzzjoni u kkonferma x’irreġistra s-server: aċċettat, miċħud jew pospost. Kopri kont diżattivat, password ħażina, risposta mċappsa tal-verifikatur, limitu ta’ żmien u verifikatur li ma jistax jintlaħaq. Jekk xi każ jispiċċa fi stat li ma tistax issemmi, l-adapter mhuwiex lest.
Żomm il-mappa mir-riżultat tal-verifikatur għall-istat tal-ħruġ ħdejn l-iskript fir-repożitorju, sabiex l-inġinier li jmiss ikun jista’ jaqra l-kuntratt mingħajr inġinerija inversa tal-kodiċi.