Tās pašas vietnes sīkfaili ir svarīgs drošības mehānisms, ko var izmantot, lai mazinātu Cross-Site Request Forgery (CSRF) uzbrukumus tīmekļa lietojumprogrammās. CSRF uzbrukumi notiek, kad uzbrucējs piemāna upuri, lai viņš veiktu neparedzētu darbību vietnē, kurā upuris ir autentificēts. Izmantojot upura sesiju, uzbrucējs var veikt darbības cietušā vārdā bez viņa piekrišanas.
Tās pašas vietnes sīkfaili palīdz novērst CSRF uzbrukumus, ierobežojot sīkfailu darbības jomu ar vienu un to pašu izcelsmi. Izcelsmi nosaka protokola (piemēram, HTTP vai HTTPS), domēna un porta numura kombinācija. Ja sīkfails ir iestatīts ar atribūtu “SameSite”, tas norāda, vai sīkfails ir jānosūta starpvietņu pieprasījumos.
Atribūtam "SameSite" ir trīs iespējamās vērtības:
1. Strict: ja atribūts SameSite ir iestatīts uz Strict, sīkfails tiek nosūtīts tikai pieprasījumos, kas nāk no tās pašas vietnes. Tas nozīmē, ka sīkfails netiks nosūtīts starpvietņu pieprasījumos, tādējādi efektīvi novēršot CSRF uzbrukumus. Piemēram, ja lietotājs ir autentificēts vietnē “example.com” un apmeklē ļaunprātīgu vietni, kas mēģina veikt CSRF uzbrukumu, pārlūkprogramma pieprasījumā neiekļaus “Strict” tās pašas vietnes sīkfailu, tādējādi novēršot uzbrukumu.
2. "Lax": ja atribūts "SameSite" ir iestatīts uz "Lax", sīkfails tiek nosūtīts starpvietņu pieprasījumos, kas tiek uzskatīti par drošiem, piemēram, ja pieprasījumu aktivizē lietotāja augstākā līmeņa navigācija. Tomēr sīkfails netiek nosūtīts pieprasījumos, ko ierosina trešo pušu vietnes, piemēram, kad tiek ielādēts attēls vai skripta tags no cita domēna. Tas nodrošina līdzsvaru starp drošību un lietojamību. Piemēram, lietotājs, kurš apmeklē ļaunprātīgu vietni, izmantojot saiti, neizraisīs CSRF uzbrukumu, jo pieprasījumā netiks iekļauts tās pašas vietnes sīkfails "Lax".
3. "Nav": ja atribūts "SameSite" ir iestatīts uz "Nav", sīkfails tiek nosūtīts visos starpvietņu pieprasījumos neatkarīgi no to izcelsmes. Tomēr, lai nodrošinātu "Nav" lietošanas drošību, sīkfailam ir jābūt arī atzīmētam kā "Drošs", kas nozīmē, ka tas tiks nosūtīts tikai, izmantojot HTTPS savienojumus. Šī kombinācija ļauj tīmekļa lietojumprogrammām atbalstīt starpvietņu funkcionalitāti, vienlaikus aizsargājot pret CSRF uzbrukumiem. Jāņem vērā, ka vērtība "Nav" ir jāizmanto tikai nepieciešamības gadījumā, jo tā palielina uzbrukuma virsmu un CSRF ievainojamību potenciālu.
Lai ilustrētu vienas vietnes sīkfailu izmantošanu CSRF uzbrukumu mazināšanai, apsveriet šādu scenāriju: bankas vietne, kas ļauj lietotājiem pārskaitīt līdzekļus. Bez vienas vietnes sīkfailiem uzbrucējs var izveidot ļaunprātīgu vietni, kurā ir slēpta veidlapa, kas automātiski iesniedz līdzekļu pārskaitījuma pieprasījumu bankas vietnei, kad to apmeklē autentificēts lietotājs. Ja lietotāja pārlūkprogramma pieprasījumā iekļauj sesijas sīkfailu, pārsūtīšana tiks veikta bez lietotāja piekrišanas. Tomēr, iestatot sesijas sīkfailu kā vienas vietnes sīkfailu ar atribūtu "Strict", pārlūkprogramma neiekļaus sīkfailu starpvietņu pieprasījumā, tādējādi efektīvi novēršot CSRF uzbrukumu.
Tās pašas vietnes sīkfaili ir vērtīgs drošības mehānisms, lai mazinātu CSRF uzbrukumus tīmekļa lietojumprogrammās. Ierobežojot sīkfailu darbības jomu līdz vienai un tai pašai izcelsmei, šie sīkfaili neļauj uzbrucējiem izmantot lietotāja sesiju, lai veiktu nesankcionētas darbības. Vērtība Strict nodrošina, ka sīkfaili tiek nosūtīti tikai pieprasījumos, kas nāk no vienas vietnes, savukārt vērtība "Lax" ļauj nosūtīt sīkfailus drošos starpvietņu pieprasījumos. Vērtība "Nav" kopā ar atribūtu "Secure" nodrošina starpvietņu funkcionalitāti, vienlaikus aizsargājot pret CSRF uzbrukumiem.
Citi jaunākie jautājumi un atbildes par EITC/IS/WASF tīmekļa lietojumprogrammu drošības pamati:
- Vai Do Not Track (DNT) ieviešana tīmekļa pārlūkprogrammās aizsargā pret pirkstu nospiedumu noņemšanu?
- Vai HTTP stingrā transporta drošība (HSTS) palīdz aizsargāties pret protokola pazemināšanas uzbrukumiem?
- Kā darbojas DNS pārsaistīšanas uzbrukums?
- Vai saglabātie XSS uzbrukumi notiek, ja tīmekļa lietojumprogrammas pieprasījumā tiek iekļauts ļaunprātīgs skripts un pēc tam nosūtīts atpakaļ lietotājam?
- Vai SSL/TLS protokols tiek izmantots, lai izveidotu šifrētu savienojumu HTTPS?
- Kas ir metadatu iegūšanas pieprasījumu galvenes un kā tās var izmantot, lai atšķirtu vienas izcelsmes pieprasījumus no starpvietņu pieprasījumiem?
- Kā uzticamie veidi samazina tīmekļa lietojumprogrammu uzbrukuma virsmu un vienkāršo drošības pārskatus?
- Kāds ir noklusējuma politikas mērķis uzticamos veidos un kā to var izmantot, lai identificētu nedrošu virkņu piešķiršanu?
- Kāds ir uzticamo tipu objekta izveides process, izmantojot uzticamo tipu API?
- Kā uzticamo tipu direktīva satura drošības politikā palīdz mazināt uz DOM balstītas starpvietņu skriptēšanas (XSS) ievainojamības?
Skatiet vairāk jautājumu un atbilžu sadaļā EITC/IS/WASF Web Applications Security Fundamentals

