Sp_executesql के सुरक्षा निहितार्थ क्या हैं?


9

डिफ़ॉल्ट रूप से, SQL सर्वर में, [public]भूमिका पर EXECUTEअधिकार हैं sp_executesql।

हालाँकि, मुझे एक डेटाबेस सर्वर विरासत में मिला है, जहां पिछले DBA ने EXECUTEदाईं ओर निरस्त किया है sp_executesql।

एक अस्थायी वर्कअराउंड के रूप में, मैं एक आवश्यक आधार पर (मास्टर डेटाबेस में एक भूमिका के माध्यम से) EXECUTEअधिकार प्रदान कर रहा हूं sp_executesql। लेकिन यह एक रखरखाव दर्द होने लगा है।

अगर मैं EXECUTEवापस सार्वजनिक रूप से अनुदान दूं, तो क्या मुझे पता होने की कोई आवश्यकता है?

जवाबों:


8

कोई नहीं। sp_executesqlSQL को निष्पादित करता है, ठीक उसी संदर्भ और विशेषाधिकारों के तहत जब मूल कॉलर एक ही SQL निष्पादित करेगा । ऐसे कई, कई, ऐसे मामले हैं जब डायनेमिक SQL अपरिहार्य है।


3
-1 क्योंकि उत्तर यह नहीं दर्शाता है कि Microsoft नोट करता है कि सुरक्षा जोखिम हो सकता है msdn.microsoft.com/en-us/library/ms188001(v=sql.105).aspx
— miracle173

@ miracle173 - निष्पक्ष होने के लिए यह बुरी तरह से गतिशील SQL लिखा गया है जो सुरक्षा जोखिम नहीं है sp_executesql। एक गतिशील एसक्यूएल आवश्यकता को मानते हुए, अक्षम करना sp_executesqlवास्तव में जोखिम को कम से कम बढ़ा सकता है जो आपको प्रश्नों को पैरामीटर करने की अनुमति देता है (विपरीत EXEC)
— मार्टिन स्मिथ

2
जबकि sql इंजेक्शन के जोखिम को कभी कम नहीं आंका जा सकता है, अक्षम करना sp_executesqlउचित शमन नहीं है। SQL इंजेक्शन त्रुटियों का भारी बहुमत क्लाइंट में तब होता है जब SQL कथन इनपुट चर के साथ SQL के टुकड़ों को 'द्वारा' हाथ से 'का निर्माण होता है और फिर' as 'होता है। उन सभी मामलों के sp_executesqlअक्षम होने से कुछ नहीं होता है।
— रेमस रुसानु
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.