გავლენა
Cross-Site Request Forgery (CSRF) საშუალებას აძლევს თავდამსხმელს მოატყუოს მსხვერპლის ბრაუზერი და განახორციელოს არასასურველი მოქმედებები სხვა ვებსაიტზე, სადაც მსხვერპლი ამჟამად დამოწმებულია. იმის გამო, რომ ბრაუზერები ავტომატურად შეიცავენ ატმოსფერულ სერთიფიკატებს, როგორიცაა ქუქიები მოთხოვნებში, თავდამსხმელს შეუძლია გააყალბოს მდგომარეობის შეცვლის ოპერაციები, როგორიცაა პაროლების შეცვლა, მონაცემების წაშლა ან ტრანზაქციების დაწყება, მომხმარებლის ცოდნის გარეშე.
ძირეული მიზეზი
CSRF-ის ფუნდამენტური მიზეზი არის ვებ ბრაუზერის ნაგულისხმევი ქცევა დომენთან დაკავშირებული ქუქიების გაგზავნისას, როდესაც ამ დომენს მიმართავენ, მიუხედავად მოთხოვნის წარმოშობისა [S1]. კონკრეტული ვალიდაციის გარეშე, რომ მოთხოვნა განზრახ იქნა გაშვებული აპლიკაციის საკუთარი მომხმარებლის ინტერფეისიდან, სერვერს არ შეუძლია განასხვავოს მომხმარებლის კანონიერი ქმედება და ყალბი.
Django CSRF დაცვის მექანიზმები
Django უზრუნველყოფს ჩაშენებულ თავდაცვის სისტემას ამ რისკების შესამცირებლად [S2] შუაპროგრამისა და შაბლონის ინტეგრაციის გზით.
Middleware აქტივაცია
django.middleware.csrf.CsrfViewMiddleware პასუხისმგებელია CSRF დაცვაზე და ჩვეულებრივ ჩართულია ნაგულისხმევად [S2]. ის უნდა იყოს განლაგებული ნებისმიერი ხედვის შუა პროგრამამდე, რომელიც ვარაუდობს, რომ CSRF შეტევები უკვე განხორციელებული იყო [S2].
შაბლონის დანერგვა
ნებისმიერი შიდა POST ფორმისთვის, დეველოპერებმა უნდა შეიტანონ {% csrf_token %} ტეგი <form> ელემენტის [S2] შიგნით. ეს უზრუნველყოფს, რომ მოთხოვნაში შედის უნიკალური საიდუმლო ჟეტონი, რომელსაც შემდეგ სერვერი ამოწმებს მომხმარებლის სესიაზე.
ტოკენის გაჟონვის რისკები
განხორციელების კრიტიკული დეტალი არის ის, რომ {% csrf_token %} არასოდეს არ უნდა იყოს შეტანილი გარე URL-ების მიმართულ ფორმებში [S2]. ამით გაჟონავს საიდუმლო CSRF ჟეტონი მესამე მხარეს, რაც პოტენციურად არღვევს მომხმარებლის სესიის უსაფრთხოებას [S2].
ბრაუზერის დონის დაცვა: SameSite Cookies
თანამედროვე ბრაუზერებმა შემოიღეს SameSite ატრიბუტი Set-Cookie სათაურისთვის, რათა უზრუნველყოს სიღრმისეული დაცვის ფენა [S1].
- მკაცრი: ქუქი იგზავნება მხოლოდ პირველი მხარის კონტექსტში, რაც იმას ნიშნავს, რომ საიტი URL-ის ზოლში ემთხვევა ქუქიის დომენს [S1].
- Lax: ქუქი არ იგზავნება გვერდითი ქვემოთხოვნებზე (როგორიცაა სურათები ან ჩარჩოები), მაგრამ იგზავნება, როდესაც მომხმარებელი ნავიგაციას იღებს საწყისი საიტზე, მაგალითად, სტანდარტული ბმულის შემდეგ [S1].
როგორ ამოწმებს მას FixVibe
FixVibe ახლა მოიცავს CSRF დაცვას, როგორც დახურულ აქტიურ შემოწმებას. დომენის გადამოწმების შემდეგ, active.csrf-protection ამოწმებს აღმოჩენილ ფორმებს, რომლებიც ცვლის მდგომარეობას, ამოწმებს CSRF-ტოკენის ფორმის შეყვანას და SameSite ქუქი-ჩანაწერების სიგნალებს, შემდეგ ცდილობს დაბალი ზემოქმედების გაყალბებული წარმოშობის გაგზავნას და აცნობებს მხოლოდ მაშინ, როდესაც სერვერი მიიღებს მას. ქუქი-ჩანაწერების შემოწმება ასევე მიუთითებს სუსტ SameSite ატრიბუტებზე, რომლებიც ამცირებს CSRF დაცვას სიღრმისეულად.
