प्राप्त करें और पोस्ट डेटा डेटा से सीधे भेजा गया डेटा है। आप इसे कच्चे पाते हैं, उपयोगकर्ता और आपके कार्यक्रम के बीच कोई चेक या सत्यापन नहीं। यहां तक कि यदि आप उस डेटा को सत्यापित करना चाहते हैं जो डेटा को जन्म दे, तो हमलावर मैन्युअल रूप से जो भी डेटा चाहता है उसके साथ अनुरोध तैयार कर सकता है। तो आपको हमेशा अनुरोध डेटा को अविश्वसनीय उपयोगकर्ता इनपुट के रूप में मानना चाहिए।
ऐसे कई हमले हैं जो कोडर पर भरोसा करते हैं कि अनुरोध डेटा अविश्वसनीय है, लेकिन सबसे प्रसिद्ध एसक्यूएल इंजेक्शन है। एसक्यूएल इंजेक्शन का मूल कारण तारों को मैन्युअल रूप से संयोजित करके एक क्वेरी बना रहा है, जिनमें से कुछ अविश्वसनीय उपयोगकर्ता इनपुट हैं। इसका मतलब है कि आप अविश्वसनीय उपयोगकर्ता इनपुट निष्पादित करने के लिए अपने डेटाबेस को बता रहे हैं।
एसक्यूएल इंजेक्शन के लिए बेवकूफ समाधान इनपुट को मान्य करना है और फिर उन्हें एक क्वेरी स्ट्रिंग में जोड़ना है, लेकिन यह भी खराब रूप है। स्ट्रिंग को सुरक्षित बनाने के लिए आप अपने सत्यापन तर्क पर भरोसा कर रहे हैं, और यदि आप इसका दुरुपयोग करते हैं - या तर्क छोटी है - तो आप एक बार फिर हमलों के संपर्क में आ जाते हैं।
सही समाधान आपके क्वेरी को उस डेटा से अलग करना है जिसमें वह शामिल है। वस्तुतः सभी डेटाबेस एडेप्टर इस दृष्टिकोण का समर्थन करते हैं, और यदि आपका कोई कारण नहीं है, तो यह उपयोग के लिए उपयुक्त नहीं है। सबसे आम मुहावरे (किसी विशेष भाषा में नहीं):
myDB.query ("सामग्री से चुनें * आईडी =?", [42]);
यह गारंटी देगा (ऐसी प्रणाली में) कि पैरामीटर निष्पादित नहीं किए जाते हैं। क्वेरी स्ट्रिंग पूरी तरह से भरोसेमंद डेटा से बनाई गई है, जबकि अविश्वसनीय डेटा अलग हो गया है।सबसे बुरी स्थिति में, अनुचित इनपुट पर लागू इस दृष्टिकोण के परिणामस्वरूप गलत डेटा हो सकता है, गलत आदेश नहीं।
एसक्यूएल इंजेक्शन से बचने के लिए यह दृष्टिकोण केंद्रीय सिद्धांत को हाइलाइट करता है जो सभी प्रकार के अनुरोध डेटा हमलों पर लागू होता है: अनुरोध डेटा आपका नहीं है और यह सुरक्षित नहीं है। अनुरोध डेटा सहित किसी भी उपयोगकर्ता इनपुट को संभालने पर, हमेशा यह मान लें कि यह आपके सिस्टम के अंतरंग ज्ञान के साथ हमलावर से निकल रहा है। यह पागल लग सकता है, लेकिन यह आपको सुरक्षित रखता है।
स्रोत
2009-08-19 18:58:40
सामान्य नियम "उपयोगकर्ता इनपुट पर भरोसा न करें" है। किसी भी रूप में उपयोगकर्ता से आने वाली कुछ भी सुरक्षा-जांच की आवश्यकता है। – Jess