टेंट चेकिंग

टेंट चेकिंग कुछ कंप्यूटर प्रोग्रामिंग भाषाओं में एक सुविधा है, जैसे कि पर्ल रूबी या बैलेरिना, जिसे दुर्भावनापूर्ण उपयोगकर्ताओं को होस्ट कंप्यूटर पर कमांड निष्पादित करने से रोककर सुरक्षा बढ़ाने के लिए डिज़ाइन किया गया है। टेंट चेकिंग मुख्य रूप से उन वेब साइटों से जुड़े विशिष्ट सुरक्षा कठिन परिस्थिति को उजागर करती हैं जिन पर एसक्यूएल इंजेक्शन या बफर ओवरफ्लो अटैक दृष्टिकोण जैसी तकनीकों का उपयोग करके हमला किया जाता है।

अवलोकन
टेंट चेकिंग के पीछे की अवधारणा यह है कि कोई भी वेरिएबल जिसे किसी बाहरी उपयोगकर्ता द्वारा संशोधित किया जा सकता है (उदाहरण के लिए प्रपत्र (वेब) में किसी फ़ील्ड द्वारा सेट किया गया वेरिएबल) एक संभावित सुरक्षा कठिन परिस्थिति उत्पन्न करता है। यदि वह चर (प्रोग्रामिंग) एक अभिव्यक्ति में प्रयोग किया जाता है जो एक दूसरे चर को सेट करता है, तो वह दूसरा चर अब भी संदिग्ध है। टेंट चेकिंग उपकरण तब चर द्वारा चर को आगे बढ़ा सकता है जो चर की एक सूची बनाते हैं जो संभावित रूप से बाहरी इनपुट से प्रभावित होते हैं। यदि इनमें से किसी भी चर का उपयोग खतरनाक कमांड (जैसे एसक्यूएल डेटाबेस या होस्ट कंप्यूटर सूत्र को सीधे कमांड) को निष्पादित करने के लिए किया जाता है, तो टेंट परीक्षक चेतावनी देता है कि प्रोग्राम संभावित रूप से खतरनाक टेंट चर का उपयोग कर रहा है। कंप्यूटर प्रोग्रामर खतरनाक इनपुट के चारों ओर एक सुरक्षित दीवार खड़ी करने के लिए प्रोग्राम को फिर से डिज़ाइन कर सकता है।

टेंट चेकिंग को गैर-हस्तक्षेप (सुरक्षा) या सूचना प्रवाह (सूचना सिद्धांत) की अधिक सामान्य अवधारणा के पूर्ण सत्यापन के रूढ़िवादी अनुमान के रूप में देखा जा सकता है। क्योंकि किसी सिस्टम में सूचना प्रवाह को उस सिस्टम के एकल निष्पादन ट्रेस की जांच करके सत्यापित नहीं किया जा सकता है, टेंट विश्लेषण के परिणाम आवश्यक रूप से उस प्रणाली की सूचना प्रवाह विशेषताओं के बारे में अनुमानित जानकारी को दर्शाएंगे जिस पर इसे प्रयुक्त किया गया है।

उदाहरण
निम्नलिखित खतरनाक पर्ल कोड वैरिएबल के मान की जाँच न करके एक बड़ी एसक्यूएल इंजेक्शन भेद्यता को खोलता है:

यदि टैंट चेकिंग चालू है, तो पर्ल कमांड चलाने से मना कर देगा और एक त्रुटि संदेश के साथ बाहर निकल जाएगा, क्योंकि एसक्यूएल क्वेरी में एक टैंटेड वेरिएबल का उपयोग किया जा रहा है। टेंट चेकिंग के बिना, एक उपयोगकर्ता ,अंकित कर सकता है, जिससे एक कमांड चल रहा है जो संपूर्ण डेटाबेस तालिका को हटा देता है। $name के दूषित मान को एसक्यूएल स्ट्रिंग शाब्दिक में एनकोड करना और एसक्यूएल क्वेरी में परिणाम का उपयोग करना अधिक सुरक्षित होगा, यह आश्वासन देते हुए कि   में एम्बेडेड किसी भी खतरनाक कमांड का मूल्यांकन नहीं किया जाएगा। इसे प्राप्त करने का दूसरा विधि किसी क्वेरी के लिए सभी परिवर्तनीय इनपुट को स्वच्छ करने के लिए तैयार कथन का उपयोग करना है।

ध्यान देने वाली बात यह है कि पर्ल डीबीआई को किसी डेटाबेस हैंडल की विशेषता सेट करने के साथ-साथ किसी के एसक्यूएल स्ट्रिंग्स की जांच करने के लिए टैंट मोड सक्षम करने की आवश्यकता होती है।

इतिहास
पर्ल ने कम से कम संस्करण 3.0 (1989 में प्रसारित) से निर्धारित समय में टेंट होने का समर्थन किया, चूँकि यह संस्करण 5.0 तक नहीं था (1994 में प्रसारित) कि  बदलना टैनिंग को एक ही रनटाइम में एकीकृत करते हुए प्रस्तुत किया गया था।

1996 में, नेटस्केप ने नेटस्केप नेविगेटर 3 में जावास्क्रिप्ट के लिए डेटा टैनिंग प्रयुक्त किया। चूँकि, समर्थन को प्रायोगिक माना गया था, इसलिए इसे अक्षम (सक्रिय करने के लिए उपयोगकर्ता के हस्तक्षेप की आवश्यकता होती है) और इससे लाभान्वित होने के लिए स्क्रिप्ट को संशोधित करने के लिए पृष्ठ लेखकों की आवश्यकता होती है। अन्य ब्राउज़र विक्रेताओं ने कार्यक्षमता को कभी प्रयुक्त नहीं किया गया था।

बाहरी संबंध

 * Guidelines from the W3C about taint-checking CGI scripts
 * perlsec - Perl security documentation