Fomu ya umma ambayo haizungumzi kamwe na mtandao wa kibinafsi bado huzalisha data ambayo mtandao wa kibinafsi unapaswa kuihukumu. Tunnel hubadilisha tu nani anampigia nani. Kila kitu baada ya upakuaji ni uamuzi wa uagizaji, na ni wa upande wa kibinafsi. Mwongozo huu unafuatilia wasilisho moja kutoka kwa kivinjari hadi rekodi ya ndani iliyothibitishwa.

Anza pale wasilisho linapotua

Kivinjari hutuma kwa sehemu ya mwisho ya umma, ambayo huandika mstari kwenye hifadhi ya upokeaji inayodhibitiwa na hurudishi chochote zaidi ya uthibitisho. Hifadhi hiyo ni sehemu ya makabidhiano, na inapaswa kuwa kitu pekee ambacho tabaka la umma linaweza kuandika ndani yake. Weka data ghafi pale bila kubadilika, pamoja na muda ilipoingia na kitambulisho thabiti cha rekodi.

Kisha mfanyakazi wa kibinafsi huvuta mistari inayosubiri kupitia tunnel na kuamua nini cha kufanya na kila mmoja. Hufanya kazi chini ya utambulisho wake mwenyewe, na hilo ni somo la sehemu inayofuata.

curl --silent --fail \
  --cert /etc/importer/client.crt --key /etc/importer/client.key \
  "https://intake.corp.internal/api/pending?limit=20" \
  -o /var/lib/importer/pending.json

Mpe mwagizaji mamlaka anayohitaji pekee

Mchakato wa wavuti wa umma na utambulisho unaoandika kwenye programu ya ndani unapaswa kuwa wakuu wawili tofauti. Seva ya umma haihitaji utawala wa ndani kwa sababu tu inapaswa kuwasilisha data ya fomu, na akaunti moja inayoshirikiwa kwa pande zote mbili hubadilisha hitilafu yoyote ya wavuti kuwa uandishi wa ndani. Mpe mfanyakazi vitambulisho vyake mwenyewe, vikomoze kwa operesheni moja ya uagizaji, na rekodi ni mkuu gani alifanya uagizaji kila mmoja. Utengano huo ndio unaofanya mpaka wa tunnel uwe na maana badala ya mapambo.

Pia dhibiti ni chanzo gani mfanyakazi anaweza kusoma. Ikiwa utekelezaji unatumia foleni au huduma ya uhamishaji, huduma hiyo huhifadhi uthibitishaji wake na sera yake ya ufikiaji, kwa sababu VPN haithibitishi chochote ndani ya data.

Kazi ya muda mfupi haikubaliwi kutoka kwa ukaguzi huo huo. Inapofanya kazi, nafasi yake ya mtandao na vitambulisho vyake bado vinatoa mamlaka, na maisha mafupi hupunguza dirisha tu. Maisha si badala ya kuamua ni operesheni gani utambulisho unaweza kufanya.

Thibitisha kabla kitu chochote cha ndani hakijabadilika

Sehemu za fomu ya umma ni maandishi yanayodhibitiwa na mshambuliaji hadi kinyume chake kithibitishwe, na mwongozo wa OWASP wa uthibitishaji wa ingizo huhesabu mitiririko ya nyuma kati ya vyanzo visivyoaminika kwa sababu hiyo hiyo. Uhamishaji uliosimbwa husema kwamba baiti zilifika salama, si kwamba zinaeleza ombi linaloruhusiwa. Changanua na uthibitisha kabla ya hatua yoyote ya upendeleo, ili mstari mbaya usifike kamwe kwenye njia ya msimbo inayoweza kutenda.

Eleza sehemu zinazoruhusiwa, muundo wake, ukubwa wake na sheria za biashara zinazopaswa kushikilia. Tarehe inaweza kuwa na muundo mzuri na bado iwe mbaya kwa operesheni inayoombwa, na data inayotaja akaunti ya ndani au hali ya idhini haipaswi kuweza kujipa mojawapo.

Tuma mistari iliyokataliwa kwenye matokeo ya ukaguzi badala ya kukisia marekebisho au kuwapeleka kwenye shell au kiolesura ghafi cha hifadhidata. Rekodi kitambulisho cha rekodi na sheria iliyoshindwa, si kila sehemu aliyoandika mwombaji.

Tengeneza sehemu ya kujaribu tena kwenye operesheni moja

Ikiwa rekodi submission-1042 inavutwa mara mbili kwa sababu uthibitisho wa kwanza ulipotea, mfanyakazi anahitaji njia ya kudumu ya kutambua rekodi chanzo na matokeo yake yaliyothibitishwa. Ratiba inayoendesha kazi mara moja haithibitishi kwamba kila mstari ulitumika mara moja. Uwasilishaji maradufu ni kawaida, kwa hivyo muundo unapaswa kuuvuta.

Tumia muamala na utaratibu wa kushughulikia nakala za programu ya ndani yenyewe, na uweke kitambulisho cha chanzo, matokeo na uthibitisho katika mfuatano mmoja wenye mshikamano. Thibitisha tu baada ya operesheni iliyokusudiwa kurekodiwa au kugawiwa kwa kudumu, na usifute kamwe mstari wa upokeaji kwa sababu tu baiti zilipakuliwa.

Kisha thibitisha hilo kwa vipimo vitatu: mstari halali, mstari wenye muundo mbaya, na kitambulisho kile kile cha chanzo kilichodhibitiwa kikiletwa mara mbili. Kila kimoja hupitia sehemu ile ile ya mwisho ambayo mfanyakazi hutumia.

for f in fixtures/valid-submission.json fixtures/bad-date.json; do
  curl --silent --fail --cert /etc/importer/client.crt \
    -X POST --data @"$f" https://intake.corp.internal/api/records
done
curl --silent --fail --cert /etc/importer/client.crt \
  -X POST --data @fixtures/valid-submission.json https://intake.corp.internal/api/records

Mistari miwili ya kwanza inapaswa kuishia katika hali tofauti za ndani, na ya tatu inapaswa kurudisha kitambulisho kilichothibitishwa tayari kwa rekodi hiyo ya chanzo badala ya kuunda cha pili. Kitu kingine chochote kinamaanisha uagizaji bado hauwezi kurudiwa.

Makala zinazohusiana