टेंट चेकिंग

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

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

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

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

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

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

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

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

बाहरी संबंध

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