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

केवल str_replace के साथ Sql इंजेक्शन सुरक्षा

यह पृथक उदाहरण इंजेक्शन के लिए असुरक्षित है।

लेकिन आपको यह महसूस करना होगा कि sql इंजेक्शन से सुरक्षा सिर्फ एक कैरेक्टर रिप्लेस नहीं है . और परिस्थितियाँ उन परिस्थितियों से भिन्न हो सकती हैं जिन्हें आप इस समय हल्के में ले रहे हैं। इसलिए, इस पद्धति की आवश्यक कमियों के कारण, लंबे समय में आपका कोड असुरक्षित हो जाएगा। :

  • चरित्र प्रतिस्थापन केवल एक भाग है आवश्यक स्वरूपण के
  • यह विशेष प्रतिस्थापन केवल स्ट्रिंग्स पर लागू किया जा सकता है, अन्य भागों को पूरी तरह से असुरक्षित छोड़कर।
  • ऐसा प्रतिस्थापन क्वेरी निष्पादन के लिए बाहरी है, इसका अर्थ है कि यह किसी भी प्रकार की मानवीय त्रुटि से ग्रस्त है।
  • ऐसा प्रतिस्थापन एक अनिवार्य रूप से अलग करने योग्य उपाय है, जिसका अर्थ है कि इसे वास्तविक क्वेरी निष्पादन से बहुत दूर ले जाया जा सकता है और अंततः भुला दिया जा सकता है।
  • इस तरह के भागने से एन्कोडिंग अटैक<का खतरा होता है। /ए> , समाधान को उपयोग में बहुत सीमित कर रहा है।

चरित्र प्रतिस्थापन में कुछ भी गलत नहीं है, लेकिन केवल तभी जब इसे पूर्ण स्वरूपण के एक भाग के रूप में उपयोग किया जाता है; सही क्वेरी भाग पर लागू; और डेटाबेस ड्राइवर द्वारा किया जाता है, प्रोग्रामर नहीं; निष्पादन से ठीक पहले।

टिप्पणियों में आपके द्वारा प्रस्तावित कार्य एक अच्छा कदम है, लेकिन फिर भी अपर्याप्त है, ऊपर सूचीबद्ध कमियों के विषय होने के कारण, वे सभी प्रकार की मानवीय त्रुटियों के लिए प्रवण हैं।

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

ऐसे कार्यों का उपयोग केवल प्लेसहोल्डर को संसाधित करने के लिए . किया जा सकता है , लेकिन निश्चित रूप से होमब्रेव्ड रिप्लेस फंक्शन का उपयोग करके नहीं, बल्कि डेटाबेस एपीआई द्वारा प्रदान किया गया एक उचित फ़ंक्शन।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COMMIT या conn.setAutoCommit(true)

  2. MySQL चुनें:WHERE (अभी समय है) =टेबलवैल्यू और टेबलवैल्यू के बीच

  3. sql वर्तमान पंक्ति की अगली या पिछली पंक्ति के लिए एक पंक्ति खींच रहा है

  4. MySQL कार्यक्षेत्र के साथ एक नया डेटाबेस बनाएँ

  5. दूसरा उच्चतम वेतन सर्वोत्तम संभव तरीके खोजें