OpenVPN skriftan auth-user-pass-verify: réttur útgangskóði
Útgangsstaða króksins er ákvörðunin, ekki loggrunnurinn hans. Varpaðu niðurstöðum sannprófandans í 0, 1 eða frestað, lestu skilríkjaskrána sem gögn og mistakast lokað.
OpenVPN breytir eftir nákvæmlega einni úttaki innskráningarskriftu: útgangsstöðunni. Allt annað sem skriftan gerir er skraut. Krókur getur náð í rétta sannprófandann, greint svarið og prentað vinalega línu en samt skilað stöðu sem þýðir hið gagnstæða við það sem höfundurinn ætlaði. Lestu samninginn fyrst og skrifaðu millistykkið í kringum hann, og þá hverfur allur þessi flokkur villna.
Samningurinn er lítill: auðkenndu reikninginn sem var sendur, spurðu samþykktu sannprófandann hinn ætlaða spurningar og samþykktu aðeins skjalfesta jákvæða niðurstöðu þess sannprófanda fyrir þá beiðni. Allt annað er innviðir.
Stöðurnar þrjár sem krókurinn getur skilað
Fyrir auth-user-pass-verify, handbók OpenVPN 2.6 skilgreinir útgangskóða 0 sem samþykki, 1 sem höfnun og 2 sem frestaða auðkenningu. Þetta eru einu þrjú svörin sem þjónninn skilur, og hvert þeirra hefur aðra afleiðingu fyrir tenginguna. Skrifta sem hættir með stöðu síðustu skipunar sinnar hefur í raun látið loggköll eða hreinsunarþrep greiða atkvæði. Skrifaðu stöðuna skýrt í hverri grein, líka í greinum sem náðu aldrei í sannprófandann.
Árangur HTTP og árangur auðkenningar eru aðskilin lög, og að rugla þeim er algengasta leiðin sem þessi krókur fer úrskeiðis. 202 svar þýðir að beiðnin var samþykkt til vinnslu, ekki að lykilorð hafi verið sannprófað. Skilgreindu vænta stöðu, lögun svarsins og endanlega syn í samræmi við API-samninginn sem þú fékkst, og ekki finna upp reitnafn vegna þess að það virðist trúlegt.
Ef svarið kemur sannarlega síðar, þá er það frestaða leiðin og hana þarf að byggja sem slíka. Frestuð tilraun sem klárast aldrei heldur auðlindum þar til tímamörkin renna út.
Lestu skilríkjaskrána nákvæmlega eins og hún er skrifuð
Með skjalfestu aðferðinni gegnum skrá skrifar þjónninn notandanafnið og lykilorðið sem fyrstu tvær línur tímabundinnar skrár, sendir þá slóð til skriftunnar og fjarlægir skrána þegar skriftan snýr aftur. Lestu þessar tvær línur sem gögn: keyrðu skrána aldrei í gegnum source, metðu hana aldrei og límdu innihald hennar aldrei í skipanalínu þar sem ferlataflan getur séð það. Varðveittu lykilorðið bæti fyrir bæti, því normalisering sem þú myndir beita á notandanafn breytir skilríkinu hljóðlega. Möppan fyrir þá tímabundnu skrá er dreifingarákvörðun, svo staðfestu að hún sé til og að ekki sé hægt að lesa hana fyrir alla á vélinni.
Haltu eigin skilríkjum sannprófandans aðskildum frá skilríkjum notandans: þau tilheyra gáttarsamþættingunni, búa í leyndarmálageymslu kerfisins og þurfa aðeins leyfi til að sannprófa, svo þau eru ekki sönnun þess að tiltekinn einstaklingur hafi auðkennt sig. Leyfðu króknum ekki heldur að verða annar lykilorðasannprófandi. Handskrifuð endurgerð á hakap samanburði verður ekki örugg með því að fínstilla lykkjuna, og viðhaldið sannprófandi skilur þegar saltaða og dýra fyrirkomulag reikningsgeymslunnar.
Ákveddu hvað svar sem ekki er hægt að flokka þýðir
Tímamörk, flutningsvillur, aflagaðar svar og óaðgengilegt bakendi eiga eitt sameiginlegt: ekkert þeirra er jákvæð sannprófun. Krókurinn ætti að mistakast lokað fyrir hvert þeirra og skrá ástæðu sem rekstraraðili getur brugðist við. Sú ástæða á heima í varðri loggskrá, ekki í skilaboðum sem skilað er til þess sem reynir að tengjast.
Vertu jafn varkár með leiðirnar sem ná alls ekki til sannprófandans. Vantar stillingargildi, ólæsilegt leyndarmál eða óuppsett fylgni ætti að framleiða höfnun með aðgreindu rekstrarmerki í stað tilviljanakenndrar samþykktar. Prófaðu þessar greinar með því að fjarlægja fylgnina í rannsóknarstofu í stað þess að rökræða um þær. Þar sem mistök í loggun geta breytt útgangsstöðunni er loggunin orðin hluti af ákvörðuninni og verður að gera hana skaðlausa.
Stillingar þjónsins skipta líka máli hér: skriftur sem notandinn skilgreinir eru aðeins virtar þegar keyrandi stilling leyfir þær á tilskildu öryggisstigi, og sú stilling er viljandi val en ekki sjálfgefið gildi sem á að hækka.
Sannprófaðu synina, ekki prentuðu línuna
Byggðu próf sem skoðar útgangsstöðuna beint. Skrifaðu sýniskilríkjaskrá, keyrðu krókinn á hana með þekktum góðum og þekktum slæmum reikningi og lestu stöðuna sem skelinn gefur upp í stað textans sem skriftan prentar. Þessi eina athugun grípur flestar samningsvillur áður en skjólstæðingur tengist yfirhöfuð.
Keyrðu síðan sömu tilvik í gegnum alvöru skjólstæðing gegn hlustanda utan framleiðslu og staðfestu hvað þjónninn skráði: samþykkt, hafnað eða frestað. Náðu yfir óvirkan reikning, rangt lykilorð, aflagað svar sannprófandans, tímamörk og óaðgengilegan sannprófanda. Ef eitthvert tilvik lendir í stöðu sem þú getur ekki nefnt, er millistykkið ekki fullbúið.
Haltu vörpuninni frá niðurstöðu sannprófandans í útgangsstöðu við hlið skriftunnar í geymslunni, svo næsti verkfræðingur geti lesið samninginn án öfugverkfræði á kóðanum.