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

पीडीओ क्या है, यह एसक्यूएल इंजेक्शन से कैसे संबंधित है, और मुझे इसका उपयोग क्यों करना चाहिए?

पीडीओ - पीएचपी डेटा ऑब्जेक्ट एक डेटाबेस एक्सेस लेयर है जो एकाधिक डेटाबेस तक पहुंच की एक समान विधि प्रदान करती है।

यह डेटाबेस-विशिष्ट सिंटैक्स के लिए जिम्मेदार नहीं है, लेकिन यह कई उदाहरणों में केवल कनेक्शन स्ट्रिंग को स्विच करके डेटाबेस और प्लेटफ़ॉर्म को स्विच करने की प्रक्रिया को काफी दर्द रहित होने की अनुमति दे सकता है।

उस कथन पर प्रथम-क्रम इंजेक्शन को रोकने के लिए तैयार कथन/पैरामीटरयुक्त प्रश्न पर्याप्त हैं। यदि आप अपने एप्लिकेशन में कहीं और अनचेक किए गए डायनेमिक SQL का उपयोग करते हैं, तो आप अभी भी दूसरे क्रम के इंजेक्शन के लिए असुरक्षित हैं।

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

पीडीओ mysql . से थोड़ा धीमा है _*. लेकिन इसमें बड़ी पोर्टेबिलिटी है। पीडीओ कई डेटाबेस में सिंगल इंटरफेस प्रदान करता है। इसका मतलब है कि आप mysql के लिए mysql_query, SQL सर्वर के लिए mssql_query आदि का उपयोग किए बिना एकाधिक डीबी का उपयोग कर सकते हैं। बस $db->query("INSERT INTO...") जैसे कुछ का उपयोग करें। हमेशा। कोई फर्क नहीं पड़ता कि आप किस डेटाबेस ड्राइवर का उपयोग कर रहे हैं।

इसलिए, बड़े या पोर्टेबल प्रोजेक्ट के लिए पीडीओ बेहतर है। यहां तक ​​कि Zend Framework पीडीओ का उपयोग करता है।

एसक्यूएल इंजेक्शन

एसक्यूएल इंजेक्शन

SQL इंजेक्शन एक ऐसी तकनीक है जहाँ दुर्भावनापूर्ण उपयोगकर्ता वेब पेज इनपुट के माध्यम से SQL कमांड को SQL कथन में इंजेक्ट कर सकते हैं।

इंजेक्ट किए गए SQL कमांड SQL स्टेटमेंट को बदल सकते हैं और वेब एप्लिकेशन की सुरक्षा से समझौता कर सकते हैं।

क्या PDO द्वारा तैयार किए गए कथन SQL इंजेक्शन को रोकने के लिए पर्याप्त हैं?

संक्षिप्त उत्तर है नहीं, पीडीओ तैयार करता है सभी संभावित SQL-इंजेक्शन हमलों से आपका बचाव नहीं करेगा। हमले उदाहरण

पीडीओ का उपयोग कैसे करें?

एक उदाहरण:

$stmt = $dbh->prepare("SELECT * FROM tables WHERE names = :name");
$stmt->execute(array(':name' => $name));

संदर्भ



  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. अमान्य कास्ट अपवाद को हैंडल नहीं किया गया था MySQL

  4. घातक त्रुटि:अपरिभाषित फ़ंक्शन पर कॉल करें mysql_connect ()

  5. मैं रेल 3 में MySQL को डिफ़ॉल्ट डेटाबेस के रूप में कैसे सेट करूं?