Sobes.tech
Junior

რა არის CSRF?

sobes.tech AI

პასუხი AI-სგან

CSRF (Cross-Site Request Forgery) — ეს არის შეტევა, რომლის დროსაც თავდამსხმელი აიძულებს მომხმარებელს განახორციელოს არასასურველი მოქმედებები ვებგვერდზე, სადაც მომხმარებელი უკვე ავტორიზებულია.

შეტევის არსი მდგომარეობს იმაში, რომ ზიანის მომტანი საიტი ან წერილი შეიცავს მოთხოვნას, რომელიც ბრაუზერმა ავტომატურად აგზავნის მიზნობრივ საიტზე. თუ მომხმარებელი შესულია მიზნობრივ საიტზე, მისი ბრაუზერი გამოაგზავნის cookies-ებს და მოთხოვნა შესრულდება მის უფლებებში.

მაგალითად, ეს შეიძლება იყოს მოთხოვნა პაროლის შეცვლის, თანხის გადარიცხვის ან ანგარიშის წაშლის შესახებ.

CSRF-დან დაცვისთვის გამოიყენება სხვადასხვა მეთოდები:

  • CSRF-ტოკენები: საიდუმლო, უნიკალური თითოეულ მოთხოვნაზე, რომლებიც გენერირდება სერვერზე და იგზავნება თითოეულ ფორმასთან ან AJAX მოთხოვნასთან ერთად. სერვერი ამოწმებს მიღებულ ტოკენის შესაბამისობას.
  • SameSite cookie ატრიბუტი: ადგენს წესს, რომლის მიხედვითაც cookie-ს მხოლოდ იმ მოთხოვნებზე იგზავნება, რომლებიც იმავე დომენიდან მოდის, სადაც cookie-ი დამყარდა.
  • Origin და Referer სათაურების შემოწმება: სერვერი ამოწმებს, საიდან მოდის მოთხოვნა. თუმცა, ამ სათაურებს შეიძლება შეცვალოს თავდამსხმელი ან ზოგიერთ შემთხვევაში არ იყოს წარმოდგენილი.
  • კრიტიკულ მოქმედებებზე ხელახლა ავტორიზაციის მოთხოვნა: მოთხოვნა პაროლის შესაყვანად წინაშე გამართავს მნიშვნელოვანი ოპერაციების შესრულებამდე.

ყველაზე ეფექტური და გავრცელებული მეთოდი არის CSRF-ტოკენების გამოყენება.

// CSRF-ტოკენის დამატების მაგალითი ფორმაში
<form action="/transfer" method="POST">
  <input type="hidden" name="_csrf_token" value="სერვერზე გენერირებული ტოკენი">
  <input type="number" name="amount">
  <button type="submit">გადარიცხვა</button>
</form>
// სერვერზე CSRF-ტოკენის შემოწმების მაგალითი (Node.js და Express)
app.post('/transfer', csrfProtection, (req, res) => {
  // მოთხოვნის დამუშავება ტოკენის წარმატებით შემოწმების შემდეგ
});