En ëffentleche Formulaire, deen ni mam privaten Netzwierk schwätzt, produzéiert trotzdem Donnéeën, déi de privaten Netzwierk muss beurteelen. Den Tunnel ännert just, wien wien ufuerdert. Alles nom Eroflueden ass eng Import-Entscheedung, an se gehéiert op déi privat Säit. Dës Duerchféierung verfollegt eng Agabung vum Browser bis zu engem festgeschriwwenen internen Registratur.

Fänkt do un, wou d'Agabung landt

De Browser schéckt un en ëffentlechen Endpunkt, deen eng Zeil an en kontrolléierten Opnam-Späicher schreift an näischt méi wéi eng Bestätegung zréckgëtt. Dee Späicher ass de Punkt vun der Iwwergab, an et sollt dat eenzegt sinn, wat déi ëffentlech Schicht schreiwe kann. Behält d'Rohdaten do onverännert, zesumme mat der Zäit, wéini se ukomm ass, an enger stabiler Kennung vum Registratur.

Duerno zitt en privaten Aarbechter ausstehend Zeilen duerch den Tunnel an entscheet, wat mat jidderee geschitt. Hie leeft ënner senger eegener Identitéit, wat d'Thema vum nächsten Abschnitt ass.

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

Gitt dem Importeur nëmmen déi Autoritéit, déi hien brauch

Den ëffentleche Webprozess an d'Identitéit, déi an déi intern Applikatioun schreift, sollten zwee verschidde Prinzipale sinn. En ëffentleche Server brauch keng intern Administratioun just well en Donnéeë vun der Formulaire muss liwweren, an e gemeinsame Kont fir béid Säiten mécht aus all Webfeeler en internen Schreiwen. Gitt dem Aarbechter seng eege Umeldungsdaten, begrenzt se op déi eng Importoperatioun, a notéiert, wéi ee Prinzipal all Import duerchgefouert huet. Dee Separation mécht d'Tunnel-Grenz bedeitungsvoll anstatt dekorativ.

Beschränkt och, vun wéi enger Quell den Aarbechter liese kann. Wann d'Implementatioun eng Queue oder en Transfertservice benotzt, behält dee Service seng eegen Authentifikatioun an Zougangspolitik, well de VPN näischt an den Donnéeën authentifizéiert.

Eng kuerzlieweg Funktioun ass net vun der selwechter Iwwerpréifung ausgeschloss. Wärend se leeft, ginn hir Netzwierkpositioun an hir Umeldungsdaten nach ëmmer Autoritéit, an eng méi kuerz Liewensdauer mécht just d'Fënster méi kleng. D'Liewensdauer ass keen Ersatz dofir, ze entscheeden, wéi eng Operatiounen d'Identitéit ausféiere kann.

Validéiert, éier eppes Internes sech ännert

Ëffentlech Formulaire-Felder sinn Text, deen den Ugräifer kontrolléiert, bis d'Géigendeel bewisen ass, an OWASP seng Richtlinn fir d'Validéierung vun den Eingaben zielt Backend-Feeds genau aus deem Grond zu den onzouverlässegen Quellen. En verschlüsselten Transport seet, datt d'Bytes intakt ukomm sinn, net datt se eng zoulässeg Ufro beschreiwen. Parst a validéiert virun all privilegéierte Schrëtt, sou datt eng schlecht Zeil ni en Codewee erreecht, dee kann handelen.

Definéiert déi erlaabte Felder, hir Formater, hir Gréissten an d'Geschäftsregelen, déi musse gëllen. En Datum kann gutt geformt sinn an trotzdem falsch fir déi ugefrote Operatioun, an eng Payload, déi en internen Kont oder en Genehmegungsstatus nennt, däerf sech keen vun deenen zwee selwer ginn.

Schéckt ofgelehnt Zeilen an en Iwwerpréifungsresultat, amplaz eng Korrektur ze roden oder se un eng Shell oder eng roh Datebank-Schnittstell weiderzereechen. Logt d'Kennung vum Registratur an déi feelgeschlo Regel, net all Feld, dat den Antragsteller getippt huet.

Maacht en Widderhuelungspunkt bei enger Operatioun

Wann den Registratur submission-1042 zweemol gezunn gëtt, well déi éischt Bestätegung verluer gaang ass, brauch den Aarbechter en dauerhafte Wee, fir de Quellregistratur an säi festgeschriwwent Resultat ze erkennen. En Zäitplang, deen d'Aufgab eemol leeft, beweist net, datt all Zeil eemol ugewannt gouf. Duebel Liwwerung ass normal, dofir muss den Design se ophuelen.

Benotzt d'Transaktioun an de Mechanismus fir Duebelse vun der interner Applikatioun selwer, a behält d'Quellkennung, d'Resultat an d'Bestätegung an enger kohärenter Sequenz. Bestätegt nëmmen, nodeems déi virgesinn Operatioun festgeschriwwen oder dauerhaft zougewisen ass, a läscht ni d'Opnam-Zeil just well d'Bytes erofgeluede goufen.

Beweist et duerno mat dräi Virbereedungen: eng gëlteg Zeil, eng falsch geformte Zeil, an déiselwecht kontrolléiert Quellkennung zweemol geliwwert. Jiddwereng vun hinnen geet duerch deeselwechten Endpunkt, deen den Aarbechter benotzt.

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

Déi éischt zwou Zeilen mussen an verschiddenen internen Zoustänn ophalen, an déi drëtt muss d'Kennung zréckginn, déi scho fir dee Quellregistratur festgeschriwwen ass, amplaz eng zweet ze schafen. Alles anescht bedeit, datt den Import nach net widderhuelbar ass.

Ähnlech Artikelen