Fọ́ọ̀mù gbogbogbò tí kò bá nẹ́tíwọ́kì àdáni sọ̀rọ̀ rí ṣì máa ń mú dátà jáde tí nẹ́tíwọ́kì àdáni gbọ́dọ̀ ṣèdájọ́. Tọ́ńbù náà kìkì yí ẹni tí ẹnìkan pè padà. Ohun gbogbo lẹ́yìn gbígbà á kù sí ìpinnu gbígbéwọlé, ó sì jẹ́ ti ẹ̀gbẹ́ àdáni. Ìtọ́nà yìí tẹ̀lé ìfisílẹ̀ kan láti inú aṣàwákiri dé àkọsílẹ̀ inú tí a ti fi àmì sí.

Bẹ̀rẹ̀ níbi tí ìfisílẹ̀ ti ń wọ̀

Aṣàwákiri náà fi ránṣẹ́ sí ibi ìparí gbogbogbò, tí ó kọ ìlà kan sínú ìkójọ gbígbà tí a ṣàkóso, kò sì dá ohunkóhun padà ju ìjẹ́rìí lọ. Ìkójọ yẹn ni ibi ìfọwọ́sí, ó sì yẹ kí ó jẹ́ ohun kan ṣoṣo tí ìpele gbogbogbò lè kọ sínú. Pa dátà àìṣeéṣe mọ́ níbẹ̀ láìyípadà, pẹ̀lú àkókò tí ó dé àti ìdánimọ̀ àkọsílẹ̀ tí kò yí.

Lẹ́yìn náà òṣìṣẹ́ àdáni fa àwọn ìlà tí ń dúró gbá kọjá tọ́ńbù, ó sì pinnu ohun tí yóò ṣe pẹ̀lú ọ̀kọ̀ọ̀kan. Ó ń ṣiṣẹ́ lábẹ́ ìdánimọ̀ tirẹ̀, ìyẹn sì ni kókó ẹ̀ka tó ń bọ̀.

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

Fún olùgbéwọlé ní àṣẹ tí ó nílò nìkan

Ìlànà wẹ́ẹ̀bù gbogbogbò àti ìdánimọ̀ tí ń kọ sínú ohun èlò inú gbọ́dọ̀ jẹ́ olórí méjì ọ̀tọ̀ọ̀tọ̀. Sẹ́fà gbogbogbò kò nílò ìṣàkóso inú kìkì nítorí pé ó gbọ́dọ̀ fi dátà fọ́ọ̀mù ránṣẹ́, àkọsílẹ̀ kan tí a pín fún ẹ̀gbẹ́ méjèèjì sì máa ń sọ àṣìṣe wẹ́ẹ̀bù èyíkéyìí di àkọsílẹ̀ inú. Fún òṣìṣẹ́ ní àwọn ẹ̀rí ìdánimọ̀ tirẹ̀, fi ààlà sí i ní ìṣe gbígbéwọlé kan ṣoṣo, kí o sì ṣàkọsílẹ̀ olórí wo ló ṣe gbígbéwọlé kọ̀ọ̀kan. Ìpínyà yẹn ni ó mú ààlà tọ́ńbù ní ìtumọ̀ dípò kí ó jẹ́ ohun ọ̀ṣọ́.

Tún fi ààlà sí orísun tí òṣìṣẹ́ lè kà. Bí ìmúṣẹ bá ń lo ìlà ìdúró tàbí iṣẹ́ gbígbé kiri, iṣẹ́ yẹn máa ń pa ìjẹ́rìí àti ìlànà àǹfààní tirẹ̀ mọ́, nítorí VPN kò jẹ́rìí ohunkóhun nínú ẹrù.

Iṣẹ́ àkókò kúkúrú kò bọ́ kúrò nínú àyẹ̀wò kan náà. Nígbà tí ó ń ṣiṣẹ́, ipò nẹ́tíwọ́kì àti àwọn ẹ̀rí ìdánimọ̀ rẹ̀ ṣì ń fún ní àṣẹ, àkókò kúkúrú sì kìkì dín fèrèsé kù. Àkókò kì í rọ́pò ìpinnu nípa àwọn ìṣe tí ìdánimọ̀ lè ṣe.

Ṣàyẹ̀wò kí ohunkóhun inú tó yípadà

Àwọn ààyè fọ́ọ̀mù gbogbogbò jẹ́ ọ̀rọ̀ tí olùkọlu ń ṣàkóso títí tí a fi fi òdìkejì hàn, àti ìtọ́sọ́nà OWASP nípa ṣíṣàyẹ̀wò ìwọlé ka àwọn ìṣàn ẹ̀yìn sí orísun tí kò ṣeé gbẹ́kẹ̀lé nítorí ìdí yẹn gan-an. Gbígbé kiri tí a fi ààmì ìpamọ́ bo sọ pé àwọn báìtì dé láìdíbàjẹ́, kì í sọ pé wọ́n ṣàpèjúwe ìbéèrè tí a gbà láàyè. Ṣàyẹ̀wò àti ṣàdánwò ṣáájú ìgbésẹ̀ àǹfààní èyíkéyìí, kí ìlà búburú má baà dé ọ̀nà kóòdù tí ó lè ṣiṣẹ́ rí.

Ṣàlàyé àwọn ààyè tí a gbà láàyè, àwọn ọ̀nà wọn, ìwọ̀n wọn àti àwọn òfin ìṣòwò tí ó gbọ́dọ̀ wà. Ọjọ́ kan lè ní ọ̀nà tó tọ́ kí ó sì ṣì jẹ́ aṣìṣe fún ìṣe tí a béèrè, ẹrù tí ó sì dárúkọ àkọsílẹ̀ inú tàbí ipò ìfọwọ́sí kò gbọ́dọ̀ lè fún ara rẹ̀ ní èyíkéyìí nínú àwọn méjèèjì.

Fi àwọn ìlà tí a kọ̀ ránṣẹ́ sí èsì àyẹ̀wò dípò kí o ṣe àfojúsùn àtúnṣe tàbí kí o gbé wọn lọ sí shell tàbí ojú ìkànnì dátàbésì àìṣeéṣe. Ṣàkọsílẹ̀ ìdánimọ̀ àkọsílẹ̀ àti òfin tí ó kùnà, kì í ṣe ààyè kọ̀ọ̀kan tí olùbéèrè tẹ̀.

Ṣe ibi ìgbìyànjú mìíràn ní ìṣe kan

Bí a bá fa àkọsílẹ̀ submission-1042 lẹ́ẹ̀mejì nítorí ìjẹ́rìí àkọ́kọ́ sọnù, òṣìṣẹ́ nílò ọ̀nà tí kò yí padà láti dá àkọsílẹ̀ orísun àti èsì tí a ti ṣàkọsílẹ̀ rẹ̀ mọ̀. Ìtòlẹ́sẹẹsẹ tí ó ń ṣiṣẹ́ iṣẹ́ lẹ́ẹ̀kan kò fi hàn pé a lo ìlà kọ̀ọ̀kan lẹ́ẹ̀kan. Ìfijíṣẹ́ lẹ́ẹ̀mejì jẹ́ ohun tó wọ́pọ̀, nítorí náà àwòrán gbọ́dọ̀ gbà á.

Lo ìgbàṣepọ̀ àti ẹ̀rọ ìṣàkóso ẹ̀dà-mejì ti ohun èlò inú fúnra rẹ̀, kí o sì pa ìdánimọ̀ orísun, èsì àti ìjẹ́rìí mọ́ nínú ìtẹ̀lélelé kan tí ó bá ara wọn mu. Jẹ́rìí lẹ́yìn tí a ti ṣàkọsílẹ̀ ìṣe tí a pète tàbí tí a ti yàn án pẹ́ títí, kí o má sì pa ìlà gbígbà nù kìkì nítorí pé a ti gbé àwọn báìtì wọlé.

Lẹ́yìn náà fi ìdánwò mẹ́ta tí ó dúró ṣinṣin hàn: ìlà tó tọ́, ìlà tí ọ̀nà rẹ̀ kò tọ́, àti ìdánimọ̀ orísun kan náà tí a ṣàkóso tí a fi ránṣẹ́ lẹ́ẹ̀mejì. Ọ̀kọ̀ọ̀kan wọn gba ibi ìparí kan náà tí òṣìṣẹ́ ń lò kọjá.

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

Àwọn ìlà méjì àkọ́kọ́ gbọ́dọ̀ parí ní ipò inú ọ̀tọ̀ọ̀tọ̀, ẹ̀kẹta sì gbọ́dọ̀ dá ìdánimọ̀ tí a ti ṣàkọsílẹ̀ fún àkọsílẹ̀ orísun yẹn padà dípò kí ó dá ẹ̀kejì. Ohunkóhun mìíràn túmọ̀ sí pé gbígbéwọlé kò tíì ṣeé tún ṣe.

Àwọn àpilẹ̀kọ tó jọra