Ազդեցություն
Cross-Site Request Forgery (CSRF) թույլ է տալիս հարձակվողին խաբել զոհի զննարկիչը՝ անցանկալի գործողություններ կատարելու այլ կայքէջում, որտեղ զոհը ներկայումս վավերացված է: Քանի որ բրաուզերները հարցումներում ավտոմատ կերպով ներառում են շրջակա միջավայրի հավատարմագրերը, ինչպիսիք են թխուկները, հարձակվողը կարող է կեղծել վիճակի փոփոխման գործողություններ, ինչպիսիք են գաղտնաբառերը փոխելը, տվյալները ջնջելը կամ գործարքներ սկսելը, առանց օգտատիրոջ իմացության:
Արմատային պատճառ
CSRF-ի հիմնական պատճառը վեբ բրաուզերի լռելյայն վարքագիծն է՝ ուղարկելով տիրույթի հետ կապված թխուկներ, երբ հարցում է արվում այդ տիրույթին՝ անկախ [S1] հարցման ծագումից: Առանց հատուկ վավերացման, որ հարցումը միտումնավոր գործարկվել է հավելվածի սեփական ինտերֆեյսից, սերվերը չի կարող տարբերակել օգտատիրոջ օրինական գործողությունը կեղծվածից:
Django CSRF պաշտպանության մեխանիզմներ
Django-ն տրամադրում է ներկառուցված պաշտպանական համակարգ՝ այդ ռիսկերը մեղմելու համար [S2] միջին ծրագրաշարի և ձևանմուշների ինտեգրման միջոցով:
Միջին ծրագրի ակտիվացում
django.middleware.csrf.CsrfViewMiddleware-ը պատասխանատու է CSRF պաշտպանության համար և սովորաբար միացված է լռելյայն [S2]: Այն պետք է տեղադրվի նախքան ցանկացած դիտման միջնակարգ ծրագիր, որը ենթադրում է, որ CSRF հարձակումներն արդեն մշակվել են [S2]:
Կաղապարի ներդրում
Ցանկացած ներքին POST ձևերի համար մշակողները պետք է ներառեն {% csrf_token %} թեգը <form> [S2] տարրի ներսում: Սա երաշխավորում է, որ հարցումում ներառված է եզակի գաղտնի նշան, որը սերվերն այնուհետև վավերացնում է օգտատիրոջ նստաշրջանի համեմատ:
Նշանների արտահոսքի ռիսկեր
Իրականացման կարևոր մանրամասնությունն այն է, որ {% csrf_token %}-ը երբեք չպետք է ներառվի [S2] արտաքին URL-ների թիրախավորման ձևերում: Այդպես վարվելով՝ գաղտնի CSRF նշանը կհայտնվի երրորդ կողմի մոտ՝ պոտենցիալ վտանգի ենթարկելով օգտվողի նիստի անվտանգությունը [S2]:
Բրաուզերի մակարդակի պաշտպանություն. SameSite Cookies
Ժամանակակից բրաուզերները ներկայացրել են SameSite հատկանիշը Set-Cookie վերնագրի համար՝ պաշտպանելու խորը [S1] շերտ ապահովելու համար:
- Խիստ. Թխուկը ուղարկվում է միայն առաջին կողմի համատեքստում, ինչը նշանակում է, որ կայքը URL տողում համապատասխանում է քուքիի [S1] տիրույթին:
- Թույլ. Թխուկը չի ուղարկվում խաչմերուկային ենթախնդրանքներով (օրինակ՝ պատկերներ կամ շրջանակներ), այլ ուղարկվում է, երբ օգտատերը նավարկվում է սկզբնական կայք, օրինակ՝ [S1] ստանդարտ հղմանը հետևելով:
Ինչպես է FixVibe-ն փորձարկում դրա համար
FixVibe-ն այժմ ներառում է CSRF պաշտպանությունը որպես փակ ակտիվ ստուգում: Դոմեյնի ստուգումից հետո active.csrf-protection-ն ստուգում է հայտնաբերված վիճակ փոխող ձևերը, ստուգում է CSRF-նշանման մուտքերը և SameSite թխուկների ազդանշանները, այնուհետև փորձում է ցածր ազդեցության կեղծված ծագման ներկայացում և հաղորդում է միայն այն դեպքում, երբ սերվերն ընդունում է այն: Cookie-ի ստուգումները նաև նշում են SameSite-ի թույլ հատկանիշները, որոնք նվազեցնում են CSRF պաշտպանության խորությունը:
