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

php:SQL इंजेक्शन को $_POST . से कैसे रोकें?

ऐसा लगता है कि यह चल सकता है, इसलिए यदि यह विफल रहता है तो कृपया बताएं कि कैसे।

हालाँकि, इसमें एक तुरंत दिखाई देने वाली गलती है:पंक्तियों में

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO'.$sWhere.$sOrder.$sLimit.')";

आप डबल कोट्स के साथ एक स्ट्रिंग शुरू कर रहे हैं और आप सिंगल कोट्स के साथ स्ट्रिंग को बाधित करने का प्रयास करते हैं, जो काम नहीं करेगा। तो कोड होना चाहिए:

$sQuery = "SELECT COUNT(*) FROM (SELECT LINE_NAME, MODEL_ONLY, VER_ONLY, PROD_NO,
                                         LOT_SIZE, START_SERIAL, SERIAL_NO_LOW, SERIAL_NO_UP, PROD_DATE 
                                  FROM DOC_TO".$sWhere.$sOrder.$sLimit.")";

आपके परिवेश के अतिरिक्त आपके कोड में एक महत्वपूर्ण सुरक्षा दोष भी है:उदाहरण के लिए पंक्ति में

$sLimit = " FIRST ".$_POST['iDisplayStart']." SKIP ".$_POST['iDisplayLength'];

आप इसे सीधे SQL क्वेरी में डालने के लिए $_POST का उपयोग कर रहे हैं, जो एक तथाकथित 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. ग्रुप बाय वास्तव में क्या करता है?

  2. MySQL कोड को एक्सेस में कनवर्ट करना:GROUP_CONCAT और ट्रिपल जॉइन

  3. स्पार्क:बड़ी MySQL तालिका को DataFrame में पढ़ना विफल रहता है

  4. SQL अलग-अलग पंक्तियों को गिनने के बजाय सभी पंक्तियों की गिनती करता है

  5. CodeIgniter के साथ MSSQL और MySQL का प्रयोग करें