FixVibe
Covered by FixVibehigh

CSRF պաշտպանություն. պաշտպանություն չարտոնված պետական փոփոխություններից

Cross-Site Request Forgery-ը (CSRF) մնում է էական սպառնալիք վեբ հավելվածների համար: Այս հետազոտությունը ուսումնասիրում է, թե ինչպես են ժամանակակից շրջանակները, ինչպիսին Django-ն է, իրականացնում պաշտպանություն և ինչպես են զննարկիչի մակարդակի ատրիբուտները, ինչպիսին SameSite-ն է, խորը պաշտպանություն տրամադրում չարտոնված հարցումներից:

CWE-352

Ազդեցություն

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 պաշտպանության խորությունը: