अधिकांश आधुनिक सिंगल पेज एप्लिकेशन में, हमें वास्तव में टोकन को क्लाइंट साइड पर स्टोर करना होगा (सबसे आम उपयोग का मामला - उपयोगकर्ता को पेज रिफ्रेश करने के बाद लॉग इन रखने के लिए)।
कुल 2 विकल्प उपलब्ध हैं: वेब स्टोरेज (सेशन स्टोरेज, लोकल स्टोरेज) और क्लाइंट साइड कुकी। दोनों विकल्पों का व्यापक रूप से उपयोग किया जाता है, लेकिन इसका मतलब यह नहीं है कि वे बहुत सुरक्षित हैं।
टॉम एबट ने JWT सेशनस्टोरेज और लोकलस्टोरेज सिक्योरिटी को अच्छी तरह बताया है :
वेब संग्रहण (लोकलस्टोरेज / सेशनस्टोरेज) उसी डोमेन पर जावास्क्रिप्ट के माध्यम से सुलभ है। इसका मतलब है कि आपकी साइट पर चलने वाले किसी भी जावास्क्रिप्ट का उपयोग वेब स्टोरेज तक होगा, और इसकी वजह से क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों की चपेट में आ सकते हैं । XSS, संक्षेप में, एक प्रकार की भेद्यता है जहां एक हमलावर जावास्क्रिप्ट को इंजेक्ट कर सकता है जो आपके पृष्ठ पर चलेगा। बेसिक एक्सएसएस हमलों को इनपुट के माध्यम से जावास्क्रिप्ट को इंजेक्ट करने का प्रयास करता है, जहां हमलावर <script>alert('You are Hacked');</script>
यह देखने के लिए एक फॉर्म में डालता है कि क्या यह ब्राउज़र द्वारा चलाया जाता है और अन्य उपयोगकर्ताओं द्वारा देखा जा सकता है।
XSS को रोकने के लिए, सामान्य प्रतिक्रिया सभी अविश्वसनीय डेटा से बचना और एनकोड करना है। प्रतिक्रिया (ज्यादातर) आपके लिए है! XSS भेद्यता संरक्षण के लिए प्रतिक्रिया कितना जिम्मेदार है, इस बारे में यहां एक शानदार चर्चा है ।
लेकिन यह सभी संभावित कमजोरियों को कवर नहीं करता है! एक अन्य संभावित खतरा सीडीएन या बाहर के बुनियादी ढांचे पर होस्ट किए गए जावास्क्रिप्ट का उपयोग है ।
यहाँ फिर टॉम है:
आधुनिक वेब ऐप में ए / बी परीक्षण, फ़नल / मार्केट विश्लेषण और विज्ञापनों के लिए 3 पार्टी जावास्क्रिप्ट लाइब्रेरी शामिल हैं। हम अपने एप्लिकेशन में अन्य लोगों के कोड को आयात करने के लिए Bower जैसे पैकेज प्रबंधकों का उपयोग करते हैं।
क्या होगा यदि आपके द्वारा उपयोग की जाने वाली केवल एक स्क्रिप्ट से समझौता किया जाता है? दुर्भावनापूर्ण जावास्क्रिप्ट को पेज पर एम्बेड किया जा सकता है, और वेब स्टोरेज से समझौता किया जाता है। इस प्रकार के एक्सएसएस हमलों से हर किसी का वेब स्टोरेज मिल सकता है जो आपकी साइट पर जाता है, बिना उनकी जानकारी के। शायद यही कारण है कि संगठनों का एक समूह वेब स्टोरेज में किसी भी जानकारी को महत्व नहीं देने या किसी भी जानकारी पर भरोसा नहीं करने की सलाह देता है। इसमें सत्र पहचानकर्ता और टोकन शामिल हैं।
इसलिए, मेरा निष्कर्ष यह है कि भंडारण तंत्र के रूप में, वेब संग्रहण स्थानांतरण के दौरान किसी भी सुरक्षित मानकों को लागू नहीं करता है । जो कोई भी वेब स्टोरेज को पढ़ता है और इसका उपयोग करता है, उन्हें यह सुनिश्चित करने के लिए अपनी मेहनत करनी चाहिए कि वे हमेशा HTTPS पर JWT भेजें और कभी HTTP न करें।