Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर - गतिशील PIVOT तालिका - SQL इंजेक्शन

हमने आपके उदाहरण के समान बहुत काम किया है। हम एसक्यूएल इंजेक्शन के बारे में चिंतित नहीं हैं, आंशिक रूप से क्योंकि हमारे पास डेटा पर पूर्ण और पूर्ण नियंत्रण है - हमारे डेटा वेयरहाउस में ईटीएल के माध्यम से दुर्भावनापूर्ण कोड प्राप्त करने का कोई तरीका नहीं है।

कुछ विचार और सलाह:

  • क्या आपको nvarcahr(500) कॉलम के साथ पिवट करने की आवश्यकता है? हमारे वर्चर (25) या अंक हैं, और वहां से हानिकारक कोड को छिपाना बहुत कठिन होगा।
  • डेटा जाँच के बारे में क्या? ऐसा लगता है कि अगर उन स्ट्रिंग्स में से एक में "]" वर्ण है, तो यह या तो हैक करने का प्रयास है या डेटा जो वैसे भी आप पर बरस जाएगा।
  • आपकी सुरक्षा कितनी मजबूत है? क्या सिस्टम इस तरह से लॉक हो गया है कि मैलोरी अपने हैक को आपके डेटाबेस (या तो सीधे या आपके एप्लिकेशन के माध्यम से) में प्रवेश नहीं कर सकता है?

हा। फ़ंक्शन QUOTENAME() को याद रखने के लिए यह सब लिखना पड़ा। एक त्वरित परीक्षण यह इंगित करने के लिए प्रतीत होता है कि इसे अपने कोड में जोड़ना काम करेगा (आपको एक त्रुटि मिलेगी, न कि गिराई गई अस्थायी तालिका):

SELECT
        @columns = 
        STUFF
        (
                (
                        SELECT DISTINCT
                                ', [' + quotename(ColumnB, ']') + ']'
                        FROM
                                #PivotTest
                        FOR XML PATH('')
                ), 1, 1, ''
        )

यह धुरी (और अनपिवट) स्थितियों के लिए काम करना चाहिए, क्योंकि आपको लगभग हमेशा अपने मूल्यों को [ब्रैकेट] करना होता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2017 पर CLR सख्त सुरक्षा

  2. SQL सर्वर में किसी भी / कुछ लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 127

  3. SQL सर्वर में एकल उद्धरण से बचना

  4. SQL सर्वर के sys.dm_sql_referenced_entities() का उदाहरण एक लिंक किए गए सर्वर को संदर्भित करने वाली इकाई को लौटाना

  5. SQL सर्वर इस त्रुटि को क्यों फेंक रहा है:मान NULL को कॉलम 'id' में सम्मिलित नहीं कर सकता?