Den Admin-Subdomain stoppt CSRF net: véier Kontrollen virum Start
En neien Hostnumm ass en neien Origin, dacks déiselwecht Säit, dofir ginn same-site Cookien an einfache Formulairen driwwer. Kontrolléiert d’Tokenen, d’Paart an d’Autorisatioun.
Den Admin-Interface op admin.example.com ze plënneren ass eng richteg Verbesserung: et hält d’Admin-Cookien ewech vun den ëffentleche Säiten, gëtt den zwou Applikatiounen getrennte Cache an erlaabt et, eng méi streng Netzwierkpolitik op een eenzegen Hostnumm ze riichten. Et ass awer keng CSRF-Kontroll, an et mécht de Code vun der ëffentlecher Säit net sécher, fir hien virun engem ageloggten Administrateur op ze loossen. D’Trennung ännert, wat de Browser als Grenz gesäit, net wat de Server kontrolléiert, dofir maacht dës véier Kontrollen, ier Dir soet et wier fäerdeg.
Liest Origin an Säit als zwee verschidde Wierder
En Origin ass Schema, Host a Port, dofir sinn https://www.example.com an https://admin.example.com verschidden Originen. Eng Säit, am SameSite-Sënn, ass Schema plus registrierbaren Domaine, dofir sinn déi zwee Hostnimm normalerweis déiselwecht Säit. Dee Virdeel ass de ganze Falle: d’SameSite-Attribut hëlleft Iech net tëscht Schwëster-Subdomainen, well de Browser d’Ufro guer net als cross-site gesäit. Richt den Admin-Interface op eng wierklech aner registrierbar Domaine, wéi admin-example.net, an d’Ufro gëtt wierklech cross-site, an do fänkt SameSite=Lax oder Strict un, Aarbecht ze maachen, op déi Dir Iech verloosse kënnt.
Test et am Browser amplaz driwwer ze raisonnéieren.
Lued d’ëffentlech Säit, maach d’Entwéckler-Tools op a kuck, wéi eng Cookien de Browser un eng Ufro Richtung Admin-Host drunhänkt. Wann d’Cookie keen Domain-Attribut huet, ass se just fir den Host a bleift op hirem eegenen Numm; wann se Domain=example.com dréit, geet se un all Schwëster, an den neien Subdomain huet Iech fir déi Cookie näischt bruecht.
Trennt d’Liesen vun der Äntwert vum Schécken vun der Ufro
D’Politik vum selwechten Origin limitéiert d’Liesen vun Äntwerten tëscht Originen. Se hält keng Ufro op, geschéckt ze ginn, a se verhënnert net, datt e Formulaire Umeldungsdaten dréit, déi de Browser schonn huet. Eng einfach Ufro, mat engem Formulaire-Inhaltstyp oder engem einfachen GET, gëtt ouni Virkontroll ausgeliwwert; duerno entscheet CORS, ob de Skript, dee rifft, d’Äntwert liese kann. CSRF lieft ganz op der Sende-Säit.
Dofir brauch de Server eng ausdrécklech Kontroll fir Operatiounen, déi den Zoustand änneren. En Token, deen un d’Sessioun gebonnen ass, oder eng Cookie mat duebler Soumissioun, déi um Server verglach gëtt, deckt de Fall of; en Origin- oder Referer-Verglach ass als zweet Paart derwäert, awer net als déi eenzeg, well net all Ufro den Header dréit an net all Proxy en erhält. D’OWASP-Leitlinn fir CSRF ze verhënneren gesäit SameSite als eng Schicht ënner méi, genee aus dësem Grond.
Decidéiert, wat d’Netzwierkpaart wierklech beweist
Eng Erlaabnislëscht vun VPN-Ausgäng virum Admin-Host ass eng gutt Kontroll an eng schwaach Identitéitsbehaaptung. Se beweist, datt d’Ufro vun enger Adress komm ass, déi d’VPN gëtt, déi jiddwereen op deem Ausgang deele kënnen, a se seet näischt driwwer, wéi eng Persoun oder wéi en Apparat dohannert steet. Behandelt se als Entréesfilter, net als Authentifikatioun.
Halt se onofhängeg vun den Ufro-Niveau-Kontrollen. Wann d’Lëscht dat eenzegt ass tëscht engem Ugräifer an engem Endpunkt, deen den Zoustand ännert, dann hëlt eng falsch konfiguréiert Route, ee Split-Tunnel-Client oder ee geléinten Laptop d’Kontroll komplett ewech.
Loggt och d’Refusen ausserhalb vun den erwaarten Beräicher. Hire Schub ass dat nëtzlechst Signal, datt een d’Grenz, déi Dir just gebaut hutt, test, an d’Stille ass d’Signal, datt de Filter guer net erreecht gëtt.
Halt Cookien, Umeldung an Autorisatioun ausdrécklech
D’Portée vun der Cookie entscheet de gréissten Deel vum Resultat. Eng Cookie vum Elterendomaine gëtt un den Admin-Host geschéckt, also kann eng Skript-Injektioun op der ëffentlecher Säit mat der Sessioun vun engem Administrateur handelen; eng Cookie just fir den Host kann dat net. Bevorzugt d’Form just fir den Host, füügt d’Secure-Attribut derbäi a benotzt de Prefix __Host- do wou d’Plattform en ënnerstëtzt, well dee Prefix Secure, Path=/ an keen Domain-Attribut verlaangt. Liest den Äntwert-Header an net de Cookiepot: Set-Cookie: __Host-admin_session=...; Secure; Path=/; HttpOnly; SameSite=Lax, ouni Domain-Attribut. E Browser verwerft eng __Host--Cookie mat Domain, also ass eng Cookie, déi nach op Schwëster-Hosten ze gesinn ass, de Beweis, datt de Prefix ni ugewannt gouf.
Duerno halt d’Autorisatioun um Server, pro Ufro, op all administrativen Endpunkt, net just bei der Umeldung. Eng Ufro vun engem erlaabten Netzwierk muss nach ëmmer authentifizéiert a fir d’Operatioun autoriséiert ginn, déi se freet; den Hostnumm ass keen Acteur. Wann déi ëffentlech an déi administrativ Applikatioun eng Umeldungsfloss oder e Sessiounsspäicher deelen, schreift déi Bezéiung op, well se ass de kierzten Wee vun engem Feeler op der ëffentlecher Säit zu enger administrativer Aktioun.
Kontrolléiert d’Grenz nach der Trennung nach eng Kéier
Fuert déi negativ Tester aus, net just de gléckleche Wee: e cross-site Formulaire ouni Token muss refuséiert ginn, en Token aus enger anerer Sessioun muss refuséiert ginn, an keen GET däerf den Zoustand änneren. Kontrolléiert d’Cookie-Attributer an den Entwéckler-Tools, bestätegt, datt d’Origin-Kontroll bei enger net passender Ufro lassgeet, a probéiert den Admin-Host vun ausserhalb vum VPN-Beräich, fir de Filter ze gesinn.
Naischt vun dësem hëlt en XSS-Feeler bannen an der administrativer Applikatioun selwer ewech. En getrennten Hostnumm ass eng Isolatiounsgrenz op der Browsersäit mat richtegem Wäert, an et ersetzt weder d’Verhënnerung vun onsécherem Code-Ausféieren nach de Schutz vun Ufroen op der Serversäit. No der Trennung ass d’Lëscht méi kuerz, wéi se ausgesäit: en aneren Origin, Cookien just fir den Host, en Token bei all Ännerung, en Entréesfilter, dem Dir als Identitéit net vertraut, an eng Autorisatioun, déi pro Ufro decidéiert gëtt.