गाइड
CSV फ़ॉर्मूला इंजेक्शन और सुरक्षित एक्सपोर्ट
CSV के उद्धरण चिह्न फ़ील्ड की सीमाएँ सुरक्षित रखते हैं, लेकिन स्प्रेडशीट को किसी सेल को फ़ॉर्मूला मानने से नहीं रोकते। लक्षित ऐप के अनुसार तरीका चुनें और उसी में जाँचें।
कौन-सा फ़ॉर्मैट चुनें?
अपने कार्यप्रवाह में हर फ़ाइल की भूमिका के अनुसार चुनें।
- सिस्टमों के बीच मशीन प्रोसेसिंग के लिए CSV → मान रखें और प्राप्तकर्ता पार्सर के विनिर्देश का पालन करें
- स्प्रेडशीट में खोलने के लिए CSV → ऐसा आउटपुट चुनें जो अविश्वसनीय मानों को टेक्स्ट माने और लक्षित ऐप में जाँचें
- क्या उद्धरण चिह्न काफी हैं? → CSV सिंटैक्स सुरक्षित रखना और फ़ॉर्मूला चलने से रोकना अलग बातें हैं
- कौन-सा सैनिटाइज़ेशन सही है? → ऐप अलग व्यवहार करते हैं; किसी एक बदलाव को सार्वभौमिक न मानें
CSV सेल को फ़ॉर्मूला माना जा सकता है
वेब फ़ॉर्म या डेटाबेस के मान CSV में हों, तो Excel, LibreOffice Calc या अन्य स्प्रेडशीट `=` जैसे अक्षर से शुरू होने वाले सेल को फ़ॉर्मूला मान सकती है। यदि हमलावर उस इनपुट को नियंत्रित कर सकता है, तो ऐप के व्यवहार या उपयोगकर्ता की कार्रवाई से जानकारी उजागर हो सकती है या अन्य नुकसान हो सकता है। असर ऐप और उसकी सेटिंग पर निर्भर है।
CSV के उद्धरण चिह्न अकेले फ़ॉर्मूला नहीं रोकते
किसी फ़ील्ड को दोहरे उद्धरण चिह्नों में रखना और उसके भीतर के उद्धरणों को एस्केप करना सिंटैक्स का काम है: इससे कॉमा और लाइन ब्रेक उसी फ़ील्ड में रहते हैं। स्प्रेडशीट उस सेल को फ़ॉर्मूला मानेगी या नहीं, यह अलग चरण है। सही CSV एस्केपिंग अपने-आप यह साबित नहीं करती कि फ़ॉर्मूला इंजेक्शन रुक गया है।
लक्षित ऐप के लिए टेक्स्ट वाला आउटपुट चुनें
पहले मशीन प्रोसेसिंग के लिए CSV और लोगों द्वारा स्प्रेडशीट में खोली जाने वाली फ़ाइलों को अलग समझें। दूसरे मामले में ऐसी लाइब्रेरी या फ़ॉर्मेट पर विचार करें जो मान को स्पष्ट रूप से टेक्स्ट के रूप में सहेज सके। CSV आवश्यक हो तो `=`, `+`, `-` या `@` से शुरू होने वाले मानों के साथ लक्षित ऐप का व्यवहार जाँचें और उसी के लिए उपाय चुनें। आगे टैब या apostrophe जोड़ना संगतता बिगाड़ सकता है या मूल मान बदल सकता है, इसलिए यह सार्वभौमिक समाधान नहीं है।
डिलिमिटर और सेल की सीमाओं का ध्यान रखें
अविश्वसनीय मानों में कॉमा, सेमीकोलन, उद्धरण चिह्न और लाइन ब्रेक हों, तो गलत आउटपुट से अनचाहे सेल बन सकते हैं। नया सेल फ़ॉर्मूला संकेत से शुरू हो सकता है। फ़ील्ड सही ढंग से एन्कोड करने के लिए मानक CSV लाइब्रेरी इस्तेमाल करें और लक्षित ऐप में फ़ॉर्मूला की व्याख्या अलग से संभालें। केवल स्ट्रिंग जोड़ने या पहले अक्षर की जाँच पर निर्भर न रहें।
खोलकर, सहेजकर और फिर खोलकर जाँचें
समर्थित स्प्रेडशीट में शुरुआती खाली जगह, नियंत्रण अक्षर, डिलिमिटर और उद्धरण चिह्न जैसे किनारी मामलों की जाँच करें। सहेजने और फिर खोलने का चक्र भी शामिल करें। OWASP चेतावनी देता है कि Excel CSV सहेजते और फिर खोलते समय उद्धरण या एस्केप हटा सकता है, जिससे पहले निष्क्रिय मान फिर से फ़ॉर्मूला बन सकता है। मशीनों के स्रोत डेटा को स्प्रेडशीट देखने हेतु बदले गए आउटपुट से अलग रखें।
उपयुक्त फ़ॉर्मैट
CSV
इसके लिए उपयुक्त: सरल सारणीबद्ध डेटा का आदान-प्रदान, जब प्राप्तकर्ता सेल के मानों को डेटा माने
इसके लिए कम उपयुक्त: अविश्वसनीय मानों को स्प्रेडशीट के लिए बिना ऐप-विशिष्ट उपाय और परीक्षण के एक्सपोर्ट करना
निर्यात से पहले जाँचें
- CSV उद्धरण और एस्केपिंग फ़ॉर्मूला चलने से रोकने की सुरक्षा सीमा नहीं हैं।
- स्प्रेडशीट ऐप फ़ॉर्मूला पहचानने, चेतावनी देने और दोबारा सहेजने में अलग व्यवहार कर सकते हैं।
- अविश्वसनीय इनपुट वाला CSV बाँटने से पहले लक्षित ऐप में जाँचें, जिसमें दोबारा खोलना भी शामिल हो।