Kuka za povezivanje je sesijska politika, a ne filter paketa
Kuka za povezivanje klijenta izvršava se jednom po sesiji i nikada ne vidi korisni teret. Prijem stavite tamo gdje postoje sesije, a promjenu sadržaja tamo gdje postoje zahtjevi.
Neko želi pregledati šta klijenti šalju kroz tunel, nađe kuku za povezivanje u dokumentaciji i počne pisati skriptu koja nikada neće primiti ni jedan paket. Kuka je stvarna i korisna, ali njena jedinica rada je sesija, a ne bajt. Odabir pravog komponenta je poređenje tri mjesta na kojima se rad može odvijati, a odlučujuće pitanje je koju jedinicu svako od njih zaista može vidjeti.
Šta kuka prima i šta nikada ne prima
Kuka za povezivanje klijenta izvršava se jednom kada autentificirani klijent uspostavi sesiju, u kontekstu procesa servera, s dokumentovanim argumentima i vrijednostima okruženja kao što su zajedničko ime i dodijeljena adresa. Može pisati konfiguraciju po klijentu, donijeti odluku o prijemu, dodijeliti vanjski resurs ili zabilježiti da se veza dogodila. Ono što ne može jeste promatrati saobraćaj, jer u trenutku kada prvi paket pređe tunel kuka se već vratila.
To nije ograničenje koje treba zaobilaziti. Povratni poziv sesije koji bi pokušao obrađivati tok morao bi raditi cijeli životni vijek veze, a skriptni ugovor demona nije napravljen za takav oblik. Pitajte čemu kuka služi prije nego zaključite da vam smeta.
Ponovna povezivanja su takođe važna. Klijent koji padne i ponovo se poveže je nova sesija, pa sve što kuka dodijeli mora biti idempotentno ili upareno s događajem prekida koji počisti. Stanje koje curi pri svakom ponovnom povezivanju uobičajena je prva greška u dizajnu zasnovanom na kuki.
Sesijska politika pripada kuki
Prijem je prirodni posao kuke. Znate ko se povezao, odakle i s kojim certifikatom, i možete odlučiti da li će se ova sesija nastaviti ili biti odbijena. Ta odluka je jeftina, donosi se jednom i ne zahtijeva gledanje u ijedan bajt korisnog tereta.
Dodjela konfiguracije odgovara istom obliku. Kuka može odabrati adresu klijenta, poslati opcije primjerene tom identitetu ili napisati fragment koji server čita za ovog klijenta. Pošto je odluka po sesiji, ostaje razumljiva kada nešto pođe po zlu i neko mora objasniti zašto je određeni klijent dobio određenu adresu.
Bilježenje je treće poklapanje. Revizijski zapis koji kaže da je sesija prihvaćena, s njenim identitetom i vremenom, pripada tačno ovdje. To nije dnevnik saobraćaja i ne treba se pretvarati da jeste. Ako neko kasnije pita šta je klijent radio unutar tunela, odgovor mora doći s drugog mjesta.
Rad s paketima pripada putanji paketa
Ako je zahtjev vidjeti ili mijenjati bajte u letu, komponent mora biti na putanji prosljeđivanja: pravilo firewall-a s redom, kuka za kontrolu saobraćaja ili prosljeđivač u korisničkom prostoru. Ti mehanizmi vide pakete i imaju vlastito stanje, vlastite načine kvara i vlastiti profil performansi.
Uređivanje korisnog tereta na tom sloju teže je od čitanja. Promjena jednog bajta može poništiti polje dužine, kontrolnu sumu ili mašinu stanja protokola, a tunel trećeg sloja vas ne štiti ni od čega od toga. Samo znači da vanjska zaglavlja nisu ona koja uređujete. Planirajte taj popravak prije nego ikome obećate prepisivanje sadržaja.
Snimanje interfejsa najjeftiniji je alat u ovoj kategoriji i ono je posmatranje, a ne uređivač. Ljudi brkaju to dvoje jer se oboje opisuje kao viđenje saobraćaja, ali snimanje proizvodi datoteku, a putanja paketa proizvodi odluku.
Promjene aplikacije pripadaju aplikaciji
Kada je cilj promijeniti šta zahtjev sadrži ili kako se odgovor formira, pravo mjesto je sama usluga ili proxy koji namjerno prekida protokol. Te komponente već razumiju zahtjeve, odgovore i autentifikaciju koju aplikacija očekuje, a to je upravo kontekst koji filteru paketa nedostaje.
Prevođenje adresa stoji na dnu ove liste s razlogom. Ono prepisuje adrese i portove i ostavlja korisni teret na miru, pa nije alat za sadržaj ma koliko se često pojavljivalo u receptu koji takođe spominje sadržaj.
Razdvajanje ovih granica čini dizajn objašnjivim. Sesijska politika u kuki, rad s paketima na putanji paketa i promjena aplikacije tamo gdje se protokol namjerno prekida: tri rečenice koje služe i kao kontrolna lista za pregled.
Gdje TLS još uvijek završava razgovor
Jedna stvar nadživi sve navedeno: saobraćaj unutar tunela koji nosi HTTPS zadržava vlastito transportno šifrovanje. Držanje VPN ključeva daje vam unutrašnji IP paket i ne daje vam sesijske ključeve za web stranicu na drugom kraju.
Zato kuka ne može pregledati sadržaj čak ni u principu i zato putanja paketa vidi šifrirani tekst, osim ako implementacija namjerno prekida unutrašnji TLS. skriptni ugovor opisuje šta se daje kuki; ne govori ništa o korisnom teretu jer nema šta da se da.