Уплыў
Падробка міжсайтавых запытаў (CSRF) дазваляе зламысніку прымусіць браўзер ахвяры выканаць непажаданыя дзеянні на іншым вэб-сайце, дзе ахвяра зараз прайшла аўтэнтыфікацыю. Паколькі браўзеры аўтаматычна ўключаюць у запыты акружаючыя ўліковыя даныя, такія як файлы cookie, зламыснік можа падрабляць аперацыі па змене стану — напрыклад, змену пароляў, выдаленне даных або ініцыяванне транзакцый — без ведама карыстальніка.
Першапрычына
Асноўнай прычынай CSRF з'яўляецца паводзіны вэб-браўзера па змаўчанні па адпраўцы файлаў cookie, звязаных з даменам, кожны раз, калі ў гэты дамен робіцца запыт, незалежна ад паходжання запыту [S1]. Без спецыяльнай праверкі таго, што запыт быў наўмысна ініцыяваны з уласнага карыстальніцкага інтэрфейсу прыкладання, сервер не можа адрозніць законнае дзеянне карыстальніка ад падробленага.
Механізмы абароны Django CSRF
Django забяспечвае ўбудаваную сістэму абароны для зніжэння гэтых рызык праз прамежкавае праграмнае забеспячэнне і інтэграцыю шаблонаў [S2].
Актывацыя прамежкавага праграмнага забеспячэння
django.middleware.csrf.CsrfViewMiddleware адказвае за абарону CSRF і звычайна ўключаны па змаўчанні [S2]. Ён павінен быць размешчаны перад любым прамежкавым праграмным забеспячэннем прагляду, якое мяркуе, што атакі CSRF ужо апрацаваны [S2].
Рэалізацыя шаблону
Для любых унутраных форм POST распрацоўшчыкі павінны ўключыць тэг {% csrf_token %} у элемент <form> [S2]. Гэта гарантуе, што ў запыт будзе ўключаны унікальны сакрэтны токен, які потым сервер правярае ў адпаведнасці з сеансам карыстальніка.
Рызыкі ўцечкі токенаў
Важнай дэталлю рэалізацыі з'яўляецца тое, што {% csrf_token %} ніколі не павінен уключацца ў формы, арыентаваныя на знешнія URL-адрасы [S2]. Гэта прывядзе да ўцечкі сакрэтнага токена CSRF трэцяй асобе, што можа паставіць пад пагрозу бяспеку сеансу карыстальніка [S2].
Абарона на ўзроўні браўзера: файлы cookie SameSite
Сучасныя браўзеры ўвялі атрыбут SameSite для загалоўка Set-Cookie, каб забяспечыць ўзровень глыбокай абароны [S1].
- Строгі: Файл cookie адпраўляецца толькі ў кантэксце першага боку, што азначае, што сайт у радку URL адпавядае дамену файла cookie [S1].
- Lax: Файл cookie не адпраўляецца па міжсайтавых падзапытах (напрыклад, выявы або фрэймы), а адпраўляецца, калі карыстальнік пераходзіць на зыходны сайт, напрыклад, пераходзячы па стандартнай спасылцы [S1].
Як FixVibe правярае гэта
FixVibe цяпер уключае абарону CSRF у якасці закрытай актыўнай праверкі. Пасля праверкі дамена active.csrf-protection правярае выяўленыя формы, якія змяняюць стан, правярае ўваходныя дадзеныя ў форме токена CSRF і сігналы кукі SameSite, затым спрабуе адпраўку падробленага паходжання з невялікім уздзеяннем і паведамляе толькі тады, калі сервер прымае гэта. Праверкі файлаў cookie таксама адзначаюць слабыя атрыбуты SameSite, якія зніжаюць паглыбленую абарону CSRF.
