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

psycopg2 और SQL इंजेक्शन सुरक्षा

AsIs असुरक्षित है, जब तक कि आप वास्तव में नहीं जानते कि आप क्या कर रहे हैं। उदाहरण के लिए आप इसे यूनिट परीक्षण के लिए उपयोग कर सकते हैं।

पैरामीटर पास करना असुरक्षित नहीं है, जब तक कि आप अपनी एसक्यूएल क्वेरी को प्री-फॉर्मेट नहीं करते हैं। कभी न करें:

sql_query = 'SELECT * FROM {}'.format(user_input)
cur.execute(sql_query)

चूंकि user_input ';DROP DATABASE;' . हो सकता है उदाहरण के लिए।

इसके बजाय, करें:

sql_query = 'SELECT * FROM %s'
cur.execute(sql_query, (user_input,))

pyscopg2 आपकी क्वेरी को साफ कर देगा। इसके अलावा, यदि आप वास्तव में अपने उपयोगकर्ता के इनपुट पर भरोसा नहीं करते हैं, तो आप अपने कोड में पैरामीटर को अपने तर्क से पूर्व-स्वच्छता कर सकते हैं।

प्रति psycopg2 दस्तावेज़ीकरण :

साथ ही, मैं कभी भी, अपने उपयोगकर्ताओं को मुझे यह नहीं बताने दूंगा कि मुझे कौन सी तालिका पूछनी चाहिए। आपके ऐप का तर्क (या मार्ग) आपको यह बताना चाहिए।

AsIs() . के संबंध में , प्रति psycopg2 दस्तावेज़ीकरण :

इसलिए, उपयोगकर्ता के इनपुट के साथ इसका उपयोग न करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वर्चर पर एसक्यूएल इंडेक्सिंग

  2. Python का उपयोग करके एक csv फ़ाइल में PostgreSQL क्वेरी निर्यात करना

  3. रेल में pg_dump संस्करण मेल नहीं खाता

  4. इफ कंडीशन का उपयोग करना जहां क्लॉज

  5. SQL ट्रिगर केवल तभी फायर करें जब कोई विशेष उपयोगकर्ता पंक्ति को अपडेट करे