2009-05-29 12 views
10

SqlParameters का उपयोग कर अपने डेटाबेस प्रश्नों में एसक्यूएल इंजेक्शन को रोकने के लिए एक अनुशंसित विधि है। मुझे कोड/फ़ंक्शन कहां मिल सकता है जो इन मानकों को आंतरिक रूप से स्वच्छ करता है? मैं इस समारोह को मेरे कस्टम कार्यान्वयन में फिर से उपयोग करना चाहता हूं। मैंने प्रतिबिंबक का उपयोग करके इसे खोजने की कोशिश की, लेकिन असफल रहा।एसक्लोकॉमंड पैरामीटर को कैसे वैध करता है?

+0

महान प्रश्न - यह समझना महत्वपूर्ण है कि पैरामीटरयुक्त प्रश्नों के उपयोग से सुरक्षा कितनी गहरी है। – RedFilter

उत्तर

24

यह एसक्यूएल इंजेक्शन के खिलाफ सुरक्षा करता है, एक्सएसएस नहीं, और कोई कोड या फ़ंक्शन है जो पैरामीटर डेटा को स्वच्छ करता है।

संरक्षण क्वेरी स्ट्रिंग से अलग से सर्वर पर पैरामीटर मानों को प्रेषित करके सुरक्षा को पूरा किया जाता है, ताकि मान कभी सीधे एसक्यूएल कथन में प्रतिस्थापित नहीं हो जाएं।

तो बजाय एसक्यूएल सर्वर कुछ इस तरह चल रहा है:

SELECT * FROM [table] WHERE [column] = ParameterValue 

यह और भी है जैसे कि यह कुछ इस तरह भाग गया:

DECLARE @ParamValue int 
    -- //@ParamValue variable is populated from the framework in a safe way 
SELECT * FROM [table] WHERE [column] = @ParamValue 

यह तेजी से और अधिक सुरक्षित और एक समारोह से मजबूत है जो पैरामीटर डेटा का मूल्यांकन करना होगा। इस तरह के एक समारोह को custom escape characters और भविष्य में संवर्धन जैसी चीजों को संभालने के लिए बहुत जटिल (पढ़ना: त्रुटि प्रवण) होना आवश्यक होगा।

यह साफ-सुथरा पक्ष पूरे मुद्दे को हल करता है: डेटा डेटा है, कोड कोड है, और कभी दो बार मिलेंगे।


अन्य, अब नष्ट कर दिया, जवाब देने के लिए आपकी टिप्पणी:

अगर मैं मूल्य ओ'रुरके में गुजरती हैं, यह वह कूटबद्ध इतना है कि यह नष्ट नहीं होती है O''Rourke होने के लिए पूछताछ। सही बात?

नहीं, यह सही नहीं है। चर सीधे डेटा ब्लॉक से बनाया गया है, और इसलिए कोई विशेष भागने या एन्कोडिंग की आवश्यकता नहीं है।

+0

ठीक है, यह समझ में आता है, धन्यवाद। "// @ परमवेल्यू वेरिएबल ढांचे से सुरक्षित तरीके से आबादी में आ गया है" यह एक सुरक्षित तरीके से कैसे आबादी है? –

+0

यह एसक्यूएल नहीं है - चर क्लाइंट से प्रेषित _data_ ब्लॉक से एसक्यूएल सर्वर द्वारा बनाया गया है, लेकिन इसे डेटा सेगमेंट में रखा गया है और कोड के रूप में कभी नहीं माना जाता है, और इसलिए डेटा को बचने या एन्कोड करने की आवश्यकता नहीं है। –

+0

क्या आप इस बारे में किसी भी विस्तृत साहित्य के बारे में जानते हैं? मैं वास्तव में पूरी प्रक्रिया को समझना चाहता हूं। –

संबंधित मुद्दे