प्रतिनिधि इंटरव्यू विषय

आप यूनिकोड द्विदिशीय (bidirectional) टेक्स्ट और भ्रमित करने वाले वर्णों (confusable-character) से जुड़ी सुरक्षा समस्याओं को कैसे रोकते हैं?

सामान्यकठिन
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

किसी कोड समीक्षा, उपयोगकर्ता नाम, या डोमेन प्रदर्शन में ऐसा यूनिकोड टेक्स्ट शामिल है जो दिखने में समान है लेकिन स्टोरेज में भिन्न है। द्विदिशीय एल्गोरिदम और confusable detection को समझाएं, फिर एक ऑडिट योग्य शमन प्रवाह (mitigation flow) डिज़ाइन करें।

प्रॉम्प्ट और संदर्भ

एक कोड-समीक्षा टूल, खाता प्रणाली, या डोमेन डिस्प्ले ऐसे वर्ण प्राप्त करता है जो दिखने में समान हैं, या ऐसे द्विदिशीय कंट्रोल्स प्राप्त करता है जो पढ़ने के क्रम को बदल देते हैं। लॉजिकल और डिस्प्ले ऑर्डर के बीच अंतर स्पष्ट करें, confusable detection को नीति प्रवर्तन (policy enforcement) से अलग करें, और एक ऐसा प्रवाह डिज़ाइन करें जो वैध बहुभाषी टेक्स्ट को सुरक्षित रखे।

साक्षात्कारकर्ता क्या मूल्यांकन करता है

  • क्या आप समझते हैं कि यूनिकोड द्विदिशीय एल्गोरिदम प्रेजेंटेशन ऑर्डर को बदलता है जबकि लॉजिकल कोड-पॉइंट ऑर्डर बरकरार रहता है।
  • क्या आप ओवरराइड्स (overrides), आइसोलेट्स (isolates), मिश्रित लिपियों और confusable detection के बीच अंतर कर सकते हैं।
  • क्या आप जानते हैं कि UTS #39 स्केलेटन एक मध्यवर्ती मान (intermediate value) है जिसे प्रदर्शित नहीं किया जाना चाहिए और न ही यूनिकोड संस्करणों में पुन: उपयोग किया जाना चाहिए।
  • क्या इनपुट सत्यापन, प्रेजेंटेशन, ऑडिट, प्राधिकरण तुलना (authorization comparison), और अपग्रेड अलग-अलग चिंताओं के रूप में डिज़ाइन किए गए हैं।

पूछने के लिए स्पष्टीकरण प्रश्न

सबसे पहले पहचानें कि फ़ील्ड स्रोत कोड, लॉगिन पहचानकर्ता, अंतर्राष्ट्रीयकृत डोमेन, खोज टेक्स्ट, या सामान्य गद्य है या नहीं। अनुमत लिपियों, लक्षित भाषाओं और डिस्प्ले समर्थन की पुष्टि करें। फिर पूछें कि क्या कोई निष्कर्ष ब्लॉक करता है, समीक्षा की आवश्यकता होती है, चेतावनी देता है, या केवल लॉग किया जाता है। यूनिकोड डेटा संस्करण, मूल-टेक्स्ट प्रतिधारण (original-text retention), और स्वीकार्य गलत-सकारात्मक दर (false-positive rate) की पुष्टि करें।

30-सेकंड का उत्तर

यूनिकोड टेक्स्ट में एक लॉजिकल ऑर्डर और एक डिस्प्ले ऑर्डर होता है। UAX #9 दिशात्मक गुणों से प्रेजेंटेशन को पुनर्व्यवस्थित करता है, लेकिन bidi कंट्रोल्स तुलना, पार्सिंग या संख्यात्मक विश्लेषण को नहीं बदलते हैं। सुरक्षा नीति को खतरनाक कंट्रोल्स को प्रतिबंधित करना चाहिए और लिपि तथा confusable जांच के लिए UTS #39 का उपयोग करना चाहिए। एक स्केलेटन एक संस्करण-युक्त मध्यवर्ती तुलना कुंजी है, न कि डिस्प्ले टेक्स्ट। मूल को बनाए रखें, संस्करण-युक्त डायग्नोस्टिक्स संलग्न करें, उच्च-जोखिम वाले पहचानकर्ताओं को ब्लॉक या समीक्षा करें, और प्राधिकरण के लिए फ़ील्ड प्रोटोकॉल के सटीक तुलना नियमों का उपयोग करें।

चरण-दर-चरण गहन विश्लेषण

1. लॉजिकल ऑर्डर को डिस्प्ले ऑर्डर से अलग करें

जब अरबी या हिब्रू को अंकों के साथ मिलाया जाता है, तो UAX #9 मजबूत, कमजोर और तटस्थ दिशात्मक प्रकारों से डिस्प्ले ऑर्डर की गणना करता है। RLO और LRO जैसे ओवरराइड्स दिशा को बाध्य करते हैं, जबकि आइसोलेट्स सीमित करते हैं कि एक आंतरिक खंड अपने परिवेश को कैसे प्रभावित करता है। रेंडरिंग मेमोरी में कोड-पॉइंट अनुक्रम को फिर से नहीं लिखती है और इसे पार्सिंग या तुलना नियम नहीं बनना चाहिए।

2. bidi-कंट्रोल और मिश्रित-लिपि जोखिम की पहचान करें

स्रोत कोड, फ़ाइल नाम और खाता नाम जैसे संरचित पहचानकर्ताओं को शायद ही कभी मनमाने दिशात्मक कंट्रोल्स की आवश्यकता होती है। इनपुट लेयर Bidi_Control वर्णों को अस्वीकार या चिह्नित कर सकती है; डिस्प्ले लेयर एस्केप या स्पष्ट सीमाएं दिखा सकती है। मिश्रित-लिपि नीति को व्यवसाय के अनुमत भाषा सेट का पालन करना चाहिए, न कि प्रत्येक गैर-ASCII वर्ण को दुर्भावनापूर्ण मानना चाहिए।

3. संस्करण-युक्त confusable detection लागू करें

UTS #39 विज़ुअल-कंफ्यूजेबिलिटी जांच के लिए confusables डेटा और स्केलेटन तंत्र प्रदान करता है। भ्रम की संभावना फ़ॉन्ट, लिपियों और संदर्भ पर निर्भर करती है; यह एक पूर्ण तुल्यता संबंध नहीं है। मूल टेक्स्ट, यूनिकोड संस्करण, लिपि विश्लेषण और निष्कर्ष को संग्रहीत करें। डेटा अपग्रेड के बाद पुनर्गणना करें और नए टकरावों की समीक्षा करें, जबकि प्राधिकरण प्रोटोकॉल के सटीक तुलना नियम का उपयोग करना जारी रखता है।

उच्च-गुणवत्ता वाला नमूना उत्तर

मैं फ़ील्ड के जोखिम को वर्गीकृत करके शुरुआत करूँगा। स्रोत कोड, उपयोगकर्ता नाम और डोमेन जैसे संरचित पहचानकर्ताओं के लिए, मैं मूल को बनाए रखूँगा और लिपियों तथा दिशात्मक कंट्रोल्स को प्रतिबंधित करूँगा; सामान्य बहुभाषी गद्य को वैध द्विदिशीय लेआउट बनाए रखना चाहिए। UAX #9 डिस्प्ले ऑर्डर निर्धारित करता है, जबकि bidi कंट्रोल्स को पार्सिंग, तुलना या संख्यात्मक विश्लेषण में बदलाव नहीं करना चाहिए, इसलिए एक ऑडिट टूल को लॉजिकल कोड-पॉइंट ऑर्डर और रेंडर किए गए आउटपुट दोनों को दिखाना चाहिए। डिटेक्शन UTS #39 प्रतिबंध स्तरों, मिश्रित-लिपि नियमों और confusables डेटा को संयोजित करेगा। एक स्केलेटन एक यूनिकोड डेटा संस्करण के लिए एक मध्यवर्ती कुंजी है: यह न तो डिस्प्ले टेक्स्ट है और न ही क्रॉस-संस्करण स्थायी पहचानकर्ता है। RLO, एक असामान्य लिपि मिश्रण, या किसी मौजूदा उच्च-जोखिम वाले पहचानकर्ता के साथ टकराव को ब्लॉक करना चाहिए या समीक्षा की आवश्यकता होनी चाहिए; सामान्य गद्य एक चेतावनी उत्पन्न कर सकता है। तुलना और प्राधिकरण को दृश्य समानता के बजाय फ़ील्ड प्रोटोकॉल के सामान्यीकरण (normalization), केस और एन्कोडिंग नियमों का उपयोग करना चाहिए। यूनिकोड डेटा अपग्रेड पर, निष्कर्षों को बैच में पुनर्गणना करें और टकरावों की समीक्षा करें ताकि बदलाव ट्रेस करने योग्य (traceable) और प्रतिवर्ती (reversible) हो।

सामान्य गलतियाँ

  • डिस्प्ले ऑर्डर को संग्रहीत स्ट्रिंग ऑर्डर के रूप में मानना।
  • यह दावा करना कि प्रत्येक दाएँ-से-बाएँ वर्ण को हटाने से समस्या हल हो जाती है, जिससे वैध अरबी या हिब्रू टेक्स्ट टूट जाता है।
  • स्केलेटन को एक स्थिर हैश, डिस्प्ले मान, या क्रॉस-संस्करण प्रोटोकॉल फ़ील्ड के रूप में मानना।
  • केवल ASCII की जाँच करना और फ़ॉन्ट, लिपियों, संयोजन चिह्नों और संदर्भ को अनदेखा करना।
  • फ़ील्ड के सटीक तुलना नियम के बजाय प्राधिकरण, हस्ताक्षर या विशिष्टता के लिए दृश्य समानता का उपयोग करना।

अनुवर्ती प्रश्न और उत्तर

प्रत्येक इनपुट से bidi कंट्रोल्स को क्यों न हटा दिया जाए?

वे धोखे का समर्थन कर सकते हैं, लेकिन वैध दस्तावेज़ों और लेआउट के लिए दिशात्मक कंट्रोल्स की आवश्यकता हो सकती है। फ़ील्ड जोखिम और लक्षित प्लेटफ़ॉर्म के आधार पर ब्लॉक करना, एस्केपिंग, आइसोलेशन या चेतावनी चुनें, और ऑडिट योग्य साक्ष्य बनाए रखें।

क्या स्केलेटन सीधे उपयोगकर्ता नाम बन सकता है?

नहीं। यह एक मध्यवर्ती पहचान रूप है और यूनिकोड डेटा के साथ बदलता है। मूल और प्रोटोकॉल-परिभाषित तुलना कुंजी को बनाए रखें; टकराव निदान या समीक्षा के लिए स्केलेटन का उपयोग करें।

आप बहुभाषी डेटा में गलत सकारात्मक परिणामों (false positives) को कैसे कम करते हैं?

अनुमत भाषा और लिपि सेट को परिभाषित करें, फिर CLDR भाषा डेटा, फ़ील्ड संदर्भ और मानव समीक्षा को संयोजित करें। सामान्य गद्य पर चेतावनी दें, जबकि लॉगिन पहचानकर्ताओं, डोमेन और कोड पहचानकर्ताओं पर सख्त प्रतिबंध लागू करें।

सार्वजनिक स्रोत

संबंधित प्रश्न