PostgreSQL अत्यधिक एक्स्टेंसिबल है, और उदाहरण के लिए आप कार्यों को लिखने के लिए अपनी स्वयं की प्रक्रियात्मक भाषा को परिभाषित कर सकते हैं।
PostgreSQL भाषा के बारे में कुछ भी नहीं जानता है सिवाय इसके कि उसे एक निश्चित भाषा हैंडलर . को कॉल करना पड़ता है फ़ंक्शन को निष्पादित करने के लिए।
इसे लागू करने के लिए जिस तरह से चुना गया था वह कोड को एक स्ट्रिंग के रूप में पास करना आसान बनाना है।
यह केवल एक कार्यान्वयन विवरण है और अन्य RDBMS की तुलना में PostgreSQL कार्यों को SQL इंजेक्शन के प्रति अधिक या कम संवेदनशील नहीं बनाता है।
ऐसे कई स्तर हैं जिन पर आपको इंजेक्शन से अपना बचाव करना होता है:
-
फ़ंक्शन तर्क:यहां आपको जब भी संभव हो गैर-स्ट्रिंग डेटा प्रकार चुनना चाहिए।
-
फ़ंक्शन के भीतर SQL कथन:यहां आपको जब भी संभव हो गतिशील SQL से बचना चाहिए, और यदि आपको गतिशील SQL का उपयोग करना है, तो आपको
%L
का उपयोग करके चर सम्मिलित करना चाहिएformat
. का पैटर्न समारोह।
फिर, यह वही है यदि फ़ंक्शन निकायों को स्ट्रिंग के रूप में निर्दिष्ट किया गया है या नहीं।