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

क्या mysql_real_escape_string () पूरी तरह से SQL इंजेक्शन से बचाव करता है?

स्टीफन एसेर के अनुसार, "mysql_real_escape_string() [है] सुरक्षित नहीं है जब SET NAMES उपयोग किया जाता है।"

उनका स्पष्टीकरण, अपने ब्लॉग से :

<ब्लॉकक्वॉट>

SET NAMES का उपयोग आमतौर पर एन्कोडिंग को डिफ़ॉल्ट से बदलने के लिए किया जाता है जिसे एप्लिकेशन की आवश्यकता होती है। यह इस तरह से किया जाता है कि mysql_real_escape_string इस बारे में नहीं जानता। इसका मतलब है कि यदि आप कुछ मल्टी बाइट एन्कोडिंग पर स्विच करते हैं जो बैकस्लैश को दूसरे तीसरे चौथे ... बाइट के रूप में अनुमति देता है, तो आप परेशानी में पड़ जाते हैं, क्योंकि mysql_real_escape_string ठीक से नहीं बचता। UTF-8 सुरक्षित है…

एन्कोडिंग बदलने का सुरक्षित तरीका है mysql_set_charset , लेकिन यह केवल नए PHP संस्करणों में उपलब्ध है

हालांकि, उन्होंने उल्लेख किया है कि UTF-8 सुरक्षित है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में उपयोगकर्ताओं और प्रमाणीकरण को कैसे प्रबंधित करें

  2. ग्रुप बाय से पहले MySQL ऑर्डर

  3. कोडनिर्देशक - एकाधिक डेटाबेस कनेक्शन

  4. रनटाइम त्रुटि:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

  5. SQLite - रैंड द्वारा ऑर्डर ()