Mae ffurflen gyhoeddus nad yw byth yn siarad â'r rhwydwaith preifat yn dal i gynhyrchu data y mae'n rhaid i'r rhwydwaith preifat farnu arno. Dim ond pwy sy'n galw pwy y mae'r twnnel yn ei newid. Mae popeth ar ôl y lawrlwytho yn benderfyniad mewnforio, ac mae'n perthyn i'r ochr breifat. Mae'r daith hon yn dilyn un cyflwyniad o'r porwr i gofnod mewnol wedi'i gadarnhau.

Dechreuwch lle mae'r cyflwyniad yn glanio

Mae'r porwr yn postio i bwynt terfyn cyhoeddus, sy'n ysgrifennu rhes i storfa dderbyn a reolir ac yn dychwelyd dim mwy na chydnabyddiaeth. Y storfa honno yw'r pwynt trosglwyddo, a dylai fod yr unig beth y gall y haen gyhoeddus ysgrifennu iddo. Cadwch y data crai yno heb ei newid, ynghyd â'r amser y cyrhaeddodd a dynodydd cofnod sefydlog.

Yna mae gweithiwr preifat yn tynnu'r rhesi sy'n aros drwy'r twnnel ac yn penderfynu beth i'w wneud â phob un. Mae'n rhedeg o dan ei hunaniaeth ei hun, sef pwnc yr adran nesaf.

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

Rhowch i'r mewnforiwr yn unig yr awdurdod sydd ei angen

Dylai proses we gyhoeddus a'r hunaniaeth sy'n ysgrifennu i'r ap mewnol fod yn ddau brif berson gwahanol. Nid oes angen gweinyddiaeth fewnol ar weinydd cyhoeddus dim ond oherwydd bod rhaid iddo ddanfon data ffurflen, ac mae un cyfrif a rennir ar gyfer y ddwy ochr yn troi unrhyw fai gwe yn ysgrifiad mewnol. Rhoddwch dystiolaeth bersonol ei hun i'r gweithiwr, cyfyngwch hi i'r un llawdriniaeth fewnforio, a chofnodwch pa brif berson a wnaeth bob mewnforiad. Y gwahanu hwnnw sy'n gwneud ffin y twnnel yn ystyrlon yn hytrach nag yn addurniadol.

Cyfyngwch hefyd o ba ffynhonnell y caiff y gweithiwr ddarllen. Os yw'r gweithrediad yn defnyddio ciw neu wasanaeth trosglwyddo, mae'r gwasanaeth hwnnw'n cadw ei ddilysu a'i bolisi mynediad ei hun, oherwydd nid yw'r VPN yn dilysu unrhyw beth y tu mewn i'r data.

Nid yw swyddogaeth byrhoedlog wedi'i heithrio rhag yr un adolygiad. Tra ei bod yn rhedeg, mae ei safle rhwydwaith a'i manylion cyfrif yn dal i roi awdurdod, a dim ond culhau'r ffenestr y mae oes byrrach yn ei wneud. Nid yw oes yn cymryd lle'r penderfyniad pa weithrediadau y caiff yr hunaniaeth eu cyflawni.

Dilyswch cyn i unrhyw beth mewnol newid

Mae meysydd ffurflen gyhoeddus yn destun dan reolaeth ymosodwr hyd nes y profir fel arall, ac mae canllawiau OWASP ar ddilysu mewnbwn yn cyfrif ffrydiau backend ymhlith ffynonellau annibynadwy am yr union reswm hwnnw. Mae trosglwyddiad wedi'i amgryptio yn dweud bod y byteau wedi cyrraedd yn gyfan, nid eu bod yn disgrifio cais a ganiateir. Dadansoddwch a dilyswch o flaen unrhyw gam breintiedig, fel na fydd rhes ddrwg byth yn cyrraedd llwybr cod a all weithredu.

Diffiniwch y meysydd a ganiateir, eu fformatau, eu maint a'r rheolau busnes sy'n rhaid eu bodloni. Gall dyddiad fod wedi'i ffurfio'n dda ac eto fod yn anghywir ar gyfer y llawdriniaeth a ofynnir, ac ni chaiff data sy'n enwi cyfrif mewnol neu statws cymeradwyaeth roi'r naill na'r llall iddo'i hun.

Anfonwch resi a wrthodwyd at ganlyniad adolygu yn lle dyfalu cywiriad neu eu hanfon ymlaen i gragen neu i ryngwyneb cronfa ddata crai. Cofnodwch ddynodydd y cofnod a'r rheol a fethodd, nid pob maes a deipiodd y ceisydd.

Gwnewch bwynt ailgynnig ar un llawdriniaeth

Os tynnir y cofnod submission-1042 ddwywaith oherwydd bod y gydnabyddiaeth gyntaf wedi'i cholli, mae angen ffordd barhaus ar y gweithiwr i adnabod y cofnod ffynhonnell a'i ganlyniad cadarn. Nid yw amserlen sy'n rhedeg y gwaith unwaith yn profi bod pob rhes wedi'i chymhwyso unwaith. Mae danfoniad dyblyg yn normal, felly rhaid i'r cynllun ei amsugno.

Defnyddiwch fecanwaith trafodion a thrin dyblygion yr ap mewnol ei hun, a chadwch ddynodydd y ffynhonnell, y canlyniad a'r gydnabyddiaeth mewn un dilyniant cydlynol. Cydnabyddwch yn unig ar ôl i'r llawdriniaeth a fwriadwyd gael ei chadarnhau neu ei neilltuo'n barhaus, ac na ddilewch y rhes dderbyn byth dim ond oherwydd bod y byteau wedi'u lawrlwytho.

Yna profwch hynny gyda thri ffeil brawf: rhes ddilys, rhes gamffurfiedig, a'r un dynodydd ffynhonnell a reolir yn cael ei ddanfon ddwywaith. Mae pob un yn mynd drwy'r un pwynt terfyn y mae'r gweithiwr yn ei ddefnyddio.

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

Rhaid i'r ddwy res gyntaf orffen mewn gwahanol gyflwr mewnol, a rhaid i'r drydedd ddychwelyd y dynodydd sydd eisoes wedi'i gadarnhau ar gyfer y cofnod ffynhonnell hwnnw yn lle creu ail un. Mae unrhyw beth arall yn golygu nad yw'r mewnforiad yn ailadroadwy eto.

Erthyglau cysylltiedig