Kuka za povezivanje je sesijska politika, a ne filter paketa
Kuka za povezivanje klijenta izvodi se jednom po sesiji i nikada ne vidi korisni teret. Stavite prijem tamo gde postoje sesije, a promenu sadržaja tamo gde postoje zahtevi.
Neko želi da pregleda šta klijenti šalju kroz tunel, pronađe kuku za povezivanje u dokumentaciji i počne da piše skriptu koja nikada neće primiti ni jedan paket. Kuka je stvarna i korisna, ali njena jedinica rada je sesija, a ne bajt. Izbor ispravne komponente je poređenje tri mesta na kojima se rad može odvijati, a odlučujuće pitanje je koju jedinicu svako od njih zaista može da vidi.
Šta kuka prima i šta nikada ne prima
Kuka za povezivanje klijenta izvodi se jednom kada autentifikovani klijent uspostavi sesiju, u kontekstu procesa servera, sa dokumentovanim argumentima i vrednostima okruženja kao što su zajedničko ime i dodeljena adresa. Može da piše konfiguraciju po klijentu, donese odluku o prijemu, dodeli spoljni resurs ili zabeleži da se veza dogodila. Ono što ne može jeste da posmatra 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 da obrađuje tok morao bi da radi ceo životni vek veze, a skriptni ugovor demona nije napravljen za takav oblik. Pitajte čemu kuka služi pre nego što 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 dodeli mora biti idempotentno ili upareno sa 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 sa kojim sertifikatom, i možete da odlučite da li će se ova sesija nastaviti ili biti odbijena. Ta odluka je jeftina, donosi se jednom i ne zahteva gledanje u ijedan bajt korisnog tereta.
Dodela konfiguracije odgovara istom obliku. Kuka može da izabere adresu klijenta, pošalje opcije koje odgovaraju tom identitetu ili napiše 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 da objasni zašto je određeni klijent dobio određenu adresu.
Beleženje je treće poklapanje. Revizijski zapis koji kaže da je sesija prihvaćena, sa njenim identitetom i vremenom, pripada tačno ovde. To nije dnevnik saobraćaja i ne treba da se pretvara da jeste. Ako neko kasnije pita šta je klijent radio unutar tunela, odgovor mora da dođe sa drugog mesta.
Rad sa paketima pripada putanji paketa
Ako je zahtev da se vide ili menjaju bajtovi u letu, komponenta mora biti na putanji prosleđivanja: pravilo firewall-a sa redom, kuka za kontrolu saobraćaja ili prosleđivač u korisničkom prostoru. Ti mehanizmi vide pakete i imaju sopstveno stanje, sopstvene načine kvara i sopstveni profil performansi.
Uređivanje korisnog tereta na tom sloju teže je od čitanja. Promena jednog bajta može da poništi 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 spoljna zaglavlja nisu ona koja uređujete. Planirajte taj popravak pre nego što 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.
Promene aplikacije pripadaju aplikaciji
Kada je cilj da se promeni šta zahtev sadrži ili kako se odgovor formira, pravo mesto je sama usluga ili proxy koji namerno prekida protokol. Te komponente već razumeju zahteve, 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 pojavljivao u receptu koji takođe spominje sadržaj.
Razdvajanje ovih granica čini dizajn objašnjivim. Sesijska politika u kuki, rad sa paketima na putanji paketa i promena aplikacije tamo gde se protokol namerno prekida: tri rečenice koje služe i kao kontrolna lista za pregled.
Gde TLS još uvek završava razgovor
Jedna stvar nadživi sve navedeno: saobraćaj unutar tunela koji nosi HTTPS zadržava sopstveno 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 da pregleda sadržaj čak ni u principu i zato putanja paketa vidi šifrovani tekst, osim ako implementacija namerno ne prekida unutrašnji TLS. skriptni ugovor opisuje šta se daje kuki; ne govori ništa o korisnom teretu jer nema šta da se da.