OpenVPN hufanya kazi kwa matokeo moja tu ya skripti ya kuingia: hali ya kutoka. Kila kitu kingine skripti inachofanya ni mapambo. Hook inaweza kufikia kithibitishaji sahihi, kuchanganua jibu na kuchapisha mstari wa kirafiki huku ikirudisha hali inayomaanisha kinyume cha kile mwandishi alikusudia. Soma mkataba kwanza na uandike adapta kuuzunguka, na darasa hilo lote la hitilafu linatoweka.

Mkataba ni mdogo: tambua akaunti iliyowasilishwa, muulize kithibitishaji kilichoidhinishwa swali lililokusudiwa, na kubali tu matokeo chanya yaliyoandikwa ya kithibitishaji hicho kwa ombi hilo. Kila kitu kingine ni miundombinu.

Hali tatu ambazo hook inaweza kurudisha

Kwa auth-user-pass-verify, mwongozo wa OpenVPN 2.6 unafafanua msimbo wa kutoka 0 kama kukubali, 1 kama kukataa na 2 kama uthibitishaji ulioahirishwa. Haya ni majibu matatu pekee ambayo seva inaelewa, na kila moja lina athari tofauti kwa muunganisho. Skripti inayotoka na hali ya amri yake ya mwisho kwa kweli imeruhusu mwito wa kumbukumbu au hatua ya kusafisha kupiga kura. Andika hali hiyo waziwazi katika kila tawi, ikiwa ni pamoja na matawi ambayo hayakuwahi kufikia kithibitishaji.

Mafanikio ya HTTP na mafanikio ya uthibitishaji ni tabaka tofauti, na kuyachanganya ndiyo njia ya kawaida zaidi ambayo hook hii inakosea. Jibu la 202 linamaanisha ombi lilikubaliwa kwa usindikaji, si kwamba nenosiri lilithibitishwa. Fafanua hali inayotarajiwa, umbo la jibu na uamuzi wa mwisho kutoka kwa mkataba wa API uliopewa, na usibuni jina la sehemu kwa sababu linaonekana kuaminika.

Ikiwa jibu litafika kweli baadaye, hiyo ndiyo njia iliyoahirishwa na lazima ijengwe hivyo. Jaribio lililoahirishwa ambalo haliwezi kukamilika kamwe hushikilia rasilimali hadi muda wa mwisho uishe.

Soma faili ya vitambulisho jinsi ilivyoandikwa

Katika mbinu iliyoandikwa ya kupitia faili, seva huandika jina la mtumiaji na nenosiri kama mistari miwili ya kwanza ya faili ya muda, hupitisha njia hiyo kwa skripti na kuondoa faili wakati skripti inarudi. Soma mistari hiyo miwili kama data: kamwe usiendeshe faili kwa source, kamwe usiitathmini, na kamwe usibandike maudhui yake kwenye mstari wa amri ambapo jedwali la michakato linaweza kuyaona. Hifadhi nenosiri baiti kwa baiti, kwa sababu kuifanya ya kawaida kama unavyofanya jina la mtumiaji hubadilisha kitambulisho kimya kimya. Saraka ya faili hiyo ya muda ni uamuzi wa usambazaji, kwa hiyo thibitisha kwamba ipo na haisomeki kwa kila mtu kwenye mwenyeji.

Tenganisha kitambulisho cha kithibitishaji yenyewe na cha mtumiaji: ni mali ya muunganisho wa lango, huishi katika hifadhi ya siri ya jukwaa na kinahitaji tu ruhusa ya kuthibitisha, kwa hiyo si ushahidi kwamba mtu fulani amethibitishwa. Usiruhusu hook iwe kithibitishaji cha pili cha nenosiri pia. Kuandika upya ulinganisho wa hash kwa mkono hakuwi salama kwa kuboresha mzunguko, na kithibitishaji kinachotunzwa tayari kinaelewa mpango wa chumvi na gharama wa hifadhi ya akaunti.

Amua maana ya jibu lisiloweza kuainishwa

Muda wa mwisho, hitilafu za usafirishaji, majibu yaliyoharibika na backend isiyopatikana hushiriki sifa moja: hakuna hata moja iliyo uthibitisho chanya. Hook inapaswa kushindwa ikiwa imefungwa kwa kila moja na kurekodi sababu ambayo mwendeshaji anaweza kuchukua hatua. Sababu hiyo ni ya kumbukumbu iliyolindwa, si ya ujumbe unaorudishwa kwa mtu anayejaribu kuunganisha.

Kuwa mwangalifu vile vile kwa njia ambazo hazifikii kithibitishaji kabisa. Thamani ya usanidi inayokosekana, siri isiyosomeka au utegemezi usiosakinishwa inapaswa kutoa kataa lenye alama ya uendeshaji tofauti badala ya kukubali kwa bahati mbaya. Jaribu matawi hayo kwa kuondoa utegemezi katika maabara badala ya kufikiri juu yao. Pale ambapo kushindwa kuandika kumbukumbu kunaweza kubadilisha hali ya kutoka, uandishi wa kumbukumbu umekuwa sehemu ya uamuzi na lazima ufanywe usiwe na madhara.

Usanidi wa seva pia ni muhimu hapa: skripti zilizofafanuliwa na mtumiaji huheshimiwa tu wakati usanidi unaoendesha unaziruhusu katika kiwango cha usalama kinachohitajika, na mpangilio huo ni chaguo la kukusudia na si chaguo-msingi la kuinua.

Thibitisha uamuzi, si mstari uliochapishwa

Jenga jaribio linalochunguza hali ya kutoka moja kwa moja. Andika faili ya vitambulisho ya mfano, endesha hook dhidi yake na akaunti inayojulikana kuwa nzuri na inayojulikana kuwa mbaya, na soma hali ambayo shell inaripoti badala ya maandishi ambayo skripti inachapisha. Ukaguzi huo mmoja hukamata hitilafu nyingi za mkataba kabla mteja hajaunganisha.

Kisha endesha kesi hizo hizo kupitia mteja halisi dhidi ya msikilizaji asiye wa uzalishaji na uthibitisha kile seva ilirekodi: kimekubaliwa, kimekataliwa au kimeahirishwa. Shughulikia akaunti iliyozimwa, nenosiri lisilo sahihi, jibu la kithibitishaji lililoharibika, muda wa mwisho na kithibitishaji kisichofikiwa. Ikiwa kesi yoyote itaishia katika hali usiyoweza kuitaja, adapta haijakamilika.

Weka ramani ya matokeo ya kithibitishaji hadi hali ya kutoka kando ya skripti kwenye hazina, ili mhandisi anayefuata aweze kusoma mkataba bila kufanya uhandisi wa kinyume wa msimbo.

Makala zinazohusiana