თანამედროვე ვებ-დეველოპმენტში JWT (JSON Web Token) ტოკენების გამოყენება მომხმარებლის სესიების მართვისთვის ფართოდ გავრცელებული პრაქტიკა გახდა. თუმცა, ტექნოლოგიური საზოგადოება სულ უფრო ხშირად მოუწოდებს პროგრამისტებს, უარი თქვან ამ მიდგომაზე. მთავარი მიზეზი მარტივია: JWT არ არის შექმნილი მომხმარებლის მუდმივი ავტორიზაციისთვის და მისი გამოყენება ამ მიზნით უსაფრთხოების ხარვეზებს ქმნის.

რატომ არის JWT არასწორი არჩევანი?

ბევრი დეველოპერი მცდარად თვლის, რომ „stateless“ არქიტექტურა, რომელსაც JWT გვთავაზობს, ავტომატურად ნიშნავს უკეთეს და უსაფრთხო სისტემას. სინამდვილეში, სრულად „stateless“ ავტორიზაცია პრაქტიკულად შეუძლებელია და ხშირად წარმოადგენს ილუზიას, რომელიც უსაფრთხოების რესურსების არასწორ გადანაწილებას იწვევს.

ხშირია არგუმენტი, რომ Google-იც იყენებს JWT-ს, თუმცა ეს სიმართლის ნახევარია. Google-ი JWT-ს იყენებს მხოლოდ Single Sign-On (SSO) სისტემებში, როგორც ტრანსპორტირების საშუალებას სერვერებს შორის ინფორმაციის გასაცვლელად და არა მომხმარებლის ბრაუზერში სესიის შესანარჩუნებლად. რეალური სესიებისთვის Google-ი ისევ ტრადიციულ, დაცულ ქუქი-ფაილებს (Cookie Sessions) იყენებს.

localStorage-ის საფრთხეები

კიდევ ერთი მნიშვნელოვანი შეცდომაა JWT ტოკენების შენახვა ბრაუზერის localStorage ან sessionStorage მეხსიერებაში. ეს სივრცეები არ არის განკუთვნილი მგრძნობიარე ინფორმაციისთვის, რადგან მათზე წვდომა ნებისმიერ სკრიპტს შეუძლია, რაც XSS (Cross-Site Scripting) შეტევების შემთხვევაში ტოკენის მარტივად მოპარვის საშუალებას იძლევა.

რა არის ალტერნატივა?

თუ თქვენ გჭირდებათ უსაფრთხო და დადასტურებული მეთოდი მომხმარებლის ავტორიზაციისთვის, საუკეთესო გზა კვლავ კლასიკური სესიური ქუქი-ფაილებია. ისინი დიზაინითვე მორგებულია სესიების მართვას და მხარდაჭერილია თითქმის ყველა ვებ-ფრეიმვორკის მიერ. თუ აუცილებლად გჭირდებათ ხელმოწერილი ტოკენის გამოყენება გარკვეული ტრანზაქციებისთვის, უმჯობესია გამოიყენოთ PASETO (Platform-Agnostic Security Tokens), რომელიც სპეციალურად უსაფრთხოების გათვალისწინებით არის შექმნილი.

საბოლოო ჯამში, დეველოპერებმა უნდა შეწყვიტონ JWT-ს ბოროტად გამოყენება. გამოიყენეთ სწორი ინსტრუმენტი სწორი მიზნისთვის — ეს არის საუკეთესო გზა თქვენი მომხმარებლების მონაცემების დასაცავად.