CSRF jeb Cross-Site Request Forgery ir vietnes ievainojamība, kurā uzbrucējs var izraisīt darbību upura sesijā citā vietnē. Viena no lietām, kas padara CSRF tik lielu risku, ir tas, ka tai pat nav nepieciešama lietotāja mijiedarbība, viss, kas nepieciešams, ir, lai upuris skatītu tīmekļa lapu ar tajā esošo izmantošanu.
Padoms: CSRF parasti izrunā burts pa burtam vai kā “jūras sērfošana”.
Kā darbojas CSRF uzbrukums?
Uzbrukums ir saistīts ar to, ka uzbrucējs izveido vietni, kurai ir metode pieprasījuma veikšanai citā vietnē. Tam var būt nepieciešama lietotāja mijiedarbība, piemēram, piespiežot viņus nospiest pogu, taču tas var būt arī bez mijiedarbības. JavaScript ir veidi, kā izraisīt automātisku darbību. Piemēram, nulle pa nullei pikseļu attēls nebūs redzams lietotājam, taču to var konfigurēt tā, lai tā “src” nosūtītu pieprasījumu citai vietnei.
JavaScript ir klienta puses valoda, tas nozīmē, ka JavaScript kods tiek palaists pārlūkprogrammā, nevis tīmekļa serverī. Pateicoties šim faktam, dators, kas veic CSRF pieprasījumu, patiesībā ir upura dators. Diemžēl tas nozīmē, ka pieprasījums tiek veikts ar visām lietotāja atļaujām. Kad uzbrūkošā vietne ir piemānījusi upuri, lai tas izdarītu CSRF pieprasījumu, pieprasījums būtībā nav atšķirams no lietotāja, kurš parasti iesniedz pieprasījumu.
CSRF ir “apmulsuša vietnieka uzbrukuma” piemērs tīmekļa pārlūkprogrammai, jo uzbrucējs bez šīm privilēģijām piemānās pārlūkprogrammai izmantot tās atļaujas. Šīs atļaujas ir jūsu sesijas un autentifikācijas marķieri mērķa vietnei. Jūsu pārlūkprogramma automātiski iekļauj šo informāciju visos pieprasījumos.
CSRF uzbrukumus ir diezgan sarežģīti organizēt. Pirmkārt, mērķa vietnei ir jābūt veidlapai vai URL, kam ir blakusparādības, piemēram, konta dzēšana. Pēc tam uzbrucējam ir jāizstrādā pieprasījums, lai veiktu vēlamo darbību. Visbeidzot, uzbrucējam ir jāpanāk, lai upuris ielādētu tīmekļa lapu ar tajā esošo izmantošanu, kamēr viņš ir pierakstījies mērķa vietnē.
Lai novērstu CSRF problēmas, vislabākais, ko varat darīt, ir iekļaut CSRF pilnvaru. CSRF marķieris ir nejauši ģenerēta virkne, kas ir iestatīta kā sīkfails; vērtība ir jāiekļauj katrā atbildē kopā ar pieprasījuma galveni, kurā ir ietverta vērtība. Lai gan CSRF uzbrukumā var būt ietverts sīkfails, nav iespējams noteikt CSRF pilnvaras vērtību, lai iestatītu galveni, un tādējādi uzbrukums tiks noraidīts.