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

MySQL इंजेक्शन के खिलाफ रोकथाम

तैयार किए गए कथनों का उपयोग करें

वे जो करते हैं वह पहले डेटा के लिए प्लेसहोल्डर्स के साथ क्वेरी का एक संस्करण भेजा जाता है। प्रश्न सत्यापित और तैयार किया गया है। सफल होने पर आप वे मान भेज सकते हैं जो डेटाबेस तैयार क्वेरी में सुरक्षित रूप से सम्मिलित करेगा।

तीन विकल्प हैं:

MySQLi एक्सटेंशन

$stmt = $mysli->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                         VALUES 
                         (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam('issssssssssssss', $_POST['costumer_ID'], ..., $_POST['Credit_CardType']);
$stmt->execute();

पीडीओ एक्सटेंशन

// use native prepared statements if supported
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $pdo->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                       VALUES 
                       (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam(1, $_POST['costumer_ID'], PDO::PARAM_INT);
...
$stmt->bindParam(15, $_POST['Credit_CardType']);

$stmt->execute();

किसी भी एक्‍सटेंशन के माध्‍यम से रॉ क्‍वेरी

मैं एक उदाहरण नहीं देने जा रहा हूं क्योंकि अन्य दो विधियां बहुत बेहतर हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:लेन-देन का चयन करें जहाँ पंक्तियाँ एक ही तालिका के अंदर मानदंड की नहीं हैं

  2. कई से कई संघों के साथ कई शर्तों के साथ डेटा खोजने के लिए एसक्यूएल/सिद्धांत क्वेरी

  3. Django:देव के लिए sqlite, उत्पादन के लिए mysql?

  4. KeyCloak उपयोगकर्ता संघ और गतिशील भूमिकाएँ

  5. एक php पेज पर दो SQL क्वेरी चलाना (SET + SELECT)