2012-01-31 11 views
9

में एसक्यूएल इंजेक्शन को नियंत्रित करें यह मेरी पहली बार एमवीसी का उपयोग कर विकास कर रहा है और मैं इसे सुरक्षित बनाना चाहता हूं।एमवीसी

जब मैं HtmlEncode का उपयोग करता हूं तो यह स्ट्रिंग को समकक्ष HTML स्ट्रिंग में परिवर्तित करता है।

उपयोगकर्ता उदाहरण के लिए खोज में प्रवेश कर सकते हैं ali 'या ali-- और वे मेरे डेटाबेस में मौजूद हैं। एसक्यूएल इंजेक्शन से मेरी खोज और लॉगिन कैसे नियंत्रित करें?

स्क्रिप्ट इंजेक्शन को रोकने के लिए भी कोई ट्यूटोरियल या सर्वोत्तम अभ्यास?

+0

आप अपने डेटाबेस तक कैसे पहुंचते हैं? LINQ? इकाई की रूपरेखा? –

+0

मैं सामान्य का उपयोग करता हूं, जिसे आप LINQ या Entity Framework – AMH

+1

पसंद करते हैं, यह [SO लिंक] देखें (http://stackoverflow.com/questions/8676/entity-framework-vs-linq-to-sql) ... दोनों आपके लिए एसक्यूएल इंजेक्शन की जांच करेंगे .... –

उत्तर

15

LINQ और Entity Framework पहले से ही आपके लिए SQL इंजेक्शन की जांच कर रहा है।

लेकिन आप प्रलेखन किसी भी तरह पढ़ना चाहिए: (प्रश्नों के लिए खंड सुरक्षा संबंधी)

LINQ MSDN Link (खंड एसक्यूएल-इंजेक्शन हमलों)

इकाई की रूपरेखा MSDN Link

आशा है कि यह मदद करता है!

+0

स्क्रिप्ट इंजेक्शन – AMH

+0

@AMH मुझे विश्वास है कि यह एक और सवाल होना चाहिए, लेकिन यह लिंक सहायक हो सकता है: [एएसपी ट्यूटोरियल] (http://www.asp.net/एमवीसी/ट्यूटोरियल/पुराने संस्करण/सुरक्षा/रोकथाम-जावास्क्रिप्ट-इंजेक्शन-हमलों-सीएस) –

+0

जो आप पसंद करते हैं कृपया LINQ या EF – AMH

4

यदि आप LINQ का उपयोग अपने डेटाबेस प्रश्नों को करने के लिए करते हैं, तो यह आपके लिए एसक्यूएल इंजेक्शन जोखिमों को समाप्त करता है।

+0

धन्यवाद यह रोम डेटाबेस का समर्थन करता है, स्क्रिप्ट इंजेक्शन के बारे में क्या – AMH

7

जब तक आप पैरामीटरयुक्त क्वेरी या एनएचएमनेटनेट या एंटिटी फ्रेमवर्क जैसे ओआरएम का उपयोग करते हैं तो आपको एसक्यूएल इंजेक्शन को रोकने के लिए कुछ भी करने की ज़रूरत नहीं है। सर्वर पर आरपीसी कॉल के हिस्से के रूप में पैरामीटर वास्तविक SQL कथन के बाहर सर्वर को पास कर दिए जाते हैं। अधिकांश ओआरएम प्रदर्शन reasones के लिए पैरामीटरयुक्त क्वेरी का उपयोग करते हैं, इसलिए वे एसक्यूएल इंजेक्शन के लिए कमजोर नहीं हैं।

एसक्यूएल इंजेक्शन केवल तभी संभव है जब आप स्ट्रिंग मानों को जोड़कर SQL कथन बनाते हैं।

उसने कहा, आपको अभी भी स्क्रिप्ट इंजेक्शन हमलों को रोकने के लिए उपयोगकर्ता इनपुट से सावधान रहना होगा। सौभाग्य से, एएसपी.नेट एमवीसी पहले ही एक सत्यापन सत्यापन तंत्र प्रदान करता है (Understanding Request Validation देखें)।

+0

लेकिन मैं पैरामीटर – AMH

+0

द्वारा मानों को पारित करके डेटाबेस छोड़ने के लिए थक गया इससे कोई फर्क नहीं पड़ता कि आप पैरामीटर को पास करते हैं (और पैरामीटर I द्वारा एक डीबी पैरामीटर-व्युत्पन्न ऑब्जेक्ट जैसे स्क्लपैमरेटर (http://msdn.microsoft.com/en-us/library/system.data.common.dbparameter.aspx), यह सर्वर को एक साधारण स्ट्रिंग के रूप में पास कर दिया जाएगा। इसे कभी निष्पादित नहीं किया जाता है। यदि आप अपने आवेदन के किसी अन्य भाग में स्ट्रिंग कॉन्सटेनेशन द्वारा SQL कथन बनाने के लिए संग्रहीत मान का उपयोग करते हैं तो भी आप परेशानी में पड़ सकते हैं। –