Base64 गोपनीयता प्रदान नहीं करता है। जो कोई भी एन्कोडेड मान प्राप्त करता है वह पासवर्ड या कुंजी के बिना इसके बाइट्स को पुनर्प्राप्त कर सकता है। क्रेडेंशियल्स को एक लंबी स्ट्रिंग में छिपाने से उनका स्वरूप बदल जाता है, न कि उन्हें कौन पढ़ सकता है। एन्कोडेड रहस्यों के लिए मूल के समान ही प्रबंधन नियम लागू करें।
एन्कोडिंग, एन्क्रिप्शन और हस्ताक्षर विभिन्न प्रश्नों के उत्तर देते हैं
एन्कोडिंग पूछती है कि बाइट्स टेक्स्ट-उन्मुख प्रणाली के माध्यम से कैसे यात्रा कर सकते हैं। एन्क्रिप्शन एक क्रिप्टोग्राफ़िक कुंजी के तहत गोपनीयता की रक्षा करता है। एक प्रमाणीकरण टैग या डिजिटल हस्ताक्षर यह स्थापित कर सकता है कि डेटा एक अधिकृत पार्टी द्वारा तैयार किया गया था और इसमें कोई बदलाव नहीं किया गया है, बशर्ते सत्यापन प्रक्रिया और कुंजियाँ सही हों। एक सादा चेकसम मुख्य रूप से आकस्मिक भ्रष्टाचार का पता लगाने में मदद करता है। इनमें से कोई भी गारंटी अकेले Base64 से नहीं मिलती है।
डिकोड किया गया JWT एक उपयोगी उदाहरण है। इसका हेडर और पेलोड पढ़ने योग्य संरचनाएं हैं, लेकिन उन्हें पढ़ने से हस्ताक्षर, जारीकर्ता, दर्शक या समाप्ति नीति का सत्यापन नहीं होता है। किसी असत्यापित दावे को अविश्वसनीय इनपुट मानें। किसी दर्शक के स्वरूपित JSON को प्राधिकरण निर्णय न बनने दें।
डिकोड की गई सामग्री को निष्क्रिय रखें
एक पेलोड HTML, JavaScript, एक SVG जिसमें सक्रिय सामग्री है, या एक विकृत दस्तावेज़ को डिकोड कर सकता है। के साथ टेक्स्ट प्रदर्शित करें textContent, नहीं innerHTML. डिकोड किए गए कोड को न चलाएं या अपने पेज में कोई मनमाना SVG न डालें। एक घोषित डेटा URI MIME प्रकार प्रेषक द्वारा प्रदान किया जाता है और गलत हो सकता है। फ़ाइल हस्ताक्षर एक संभावित प्रारूप की पहचान करने में मदद करते हैं, लेकिन एक मिलान हेडर यह स्थापित नहीं करता है कि फ़ाइल पूर्ण या सुरक्षित है।
// decodedText comes from an untrusted payload.
const output = document.createElement('pre');
output.textContent = decodedText;
document.body.append(output); // displays markup as text
मेमोरी आवंटित करने से पहले सीमाएँ निर्धारित करें
एन्कोडेड टेक्स्ट डेटा का विस्तार करता है, और एक ब्राउज़र एक ही समय में इनपुट स्ट्रिंग, डिकोडेड बाइट्स और पूर्वावलोकन रख सकता है। डिकोडिंग से पहले सीमाएं लागू करें, स्वीकृत दस्तावेज़ प्रकारों को प्रतिबंधित करें, और उपयोगकर्ताओं को लंबे ऑपरेशन रद्द करने दें। विकृत इनपुट को आउटपुट के बजाय एक अलग त्रुटि स्थिति उत्पन्न करनी चाहिए जिसे कॉपी किया जा सकता है जैसे कि यह सफल डेटा था।
संवेदनशील कार्य के लिए, टूल के नेटवर्क व्यवहार और अवधारण नीति का निरीक्षण करें। ब्राउज़र प्रोसेसिंग और सर्वर API प्रोसेसिंग की अलग-अलग सीमाएँ हैं। पेज यूआरएल में टोकन डालने से बचें, जहां वे ब्राउज़र इतिहास, स्क्रीनशॉट या एक्सेस लॉग दर्ज कर सकते हैं। परीक्षण करते समय, समान संरचना वाले सिंथेटिक डेटा का उपयोग करें। RFC 4648 एन्कोडिंग अस्पष्टताओं पर चर्चा करता है; एक बड़े प्रोटोकॉल की सुरक्षा अभी भी उसके पूर्ण डिज़ाइन पर निर्भर करती है।