MySQL sql इंजेक्शन कसे प्रतिबंधित करते? एसक्यूएल इंजेक्शन तत्त्व आणि प्रतिबंध

, MySQLsql इंजेक्शन कसे रोखायचे? एसक्यूएल इंजेक्शन तत्त्व आणि प्रतिबंध

, MySQL आणि एसक्यूएल इंजेक्शन

जर तुम्ही वेब पेजद्वारे वापरकर्त्याने एंटर केलेला डेटा घेतला आणि तो a मध्ये टाकलाMySQL डेटाबेस, नंतर SQL इंजेक्शन सुरक्षा समस्या असू शकतात.

हा धडा तुम्हाला एसक्यूएल इंजेक्शन कसा रोखायचा आणि SQL मधील इंजेक्टेड कॅरेक्टर फिल्टर करण्यासाठी स्क्रिप्टचा वापर कसा करायचा याची ओळख करून देईल.

तथाकथित SQL इंजेक्शन म्हणजे डोमेन नाव किंवा पृष्ठ विनंतीची क्वेरी स्ट्रिंग सबमिट करण्यासाठी किंवा इनपुट करण्यासाठी वेब फॉर्ममध्ये SQL कमांड्स टाकून दुर्भावनापूर्ण SQL कमांड कार्यान्वित करण्यासाठी सर्व्हरला फसवणे.

आम्ही वापरकर्ता इनपुटवर कधीही विश्वास ठेवू नये, आम्ही असे गृहीत धरले पाहिजे की वापरकर्ता इनपुट डेटा असुरक्षित आहे आणि आम्हाला सर्व वापरकर्ता इनपुट डेटा फिल्टर करणे आवश्यक आहे.

खालील उदाहरणामध्ये, एंटर केलेले वापरकर्तानाव अक्षरे, संख्या आणि अंडरस्कोअरचे संयोजन असणे आवश्यक आहे आणि वापरकर्तानाव 8 ते 20 वर्णांच्या दरम्यान असणे आवश्यक आहे:

if (preg_match("/^\w{8,20}$/", $_GET['username'], $matches))
{
   $result = mysqli_query($conn, "SELECT * FROM users 
                          WHERE username=$matches[0]");
}
 else 
{
   echo "username 输入异常";
}

कोणतीही विशेष वर्ण फिल्टर केलेली नसताना उद्भवणाऱ्या SQL परिस्थितीवर एक नजर टाकूया:

// 设定$name 中插入了我们不需要的SQL语句
$name = "Qadir'; DELETE FROM users;";
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

वरील इंजेक्शन स्टेटमेंटमध्ये, आम्ही $name चे व्हेरिएबल फिल्टर केले नाही आणि आम्हाला आवश्यक नसलेले SQL स्टेटमेंट $name मध्ये समाविष्ट केले आहे, जे वापरकर्त्यांच्या टेबलमधील सर्व डेटा हटवेल.

PHP मधील mysqli_query() ला एकाधिक SQL स्टेटमेंट कार्यान्वित करण्याची परवानगी नाही, परंतु SQLite आणि PostgreSQL मध्ये, एकाधिक SQL स्टेटमेंट एकाच वेळी कार्यान्वित केली जाऊ शकतात, म्हणून आम्हाला या वापरकर्त्यांचा डेटा काटेकोरपणे सत्यापित करणे आवश्यक आहे.

SQL इंजेक्शन टाळण्यासाठी, आम्हाला खालील मुद्द्यांकडे लक्ष देणे आवश्यक आहे:

  • 1. वापरकर्ता इनपुटवर कधीही विश्वास ठेवू नका.वापरकर्त्याचे इनपुट तपासा, तुम्ही रेग्युलर एक्स्प्रेशन वापरू शकता किंवा लांबी मर्यादित करू शकता; सिंगल कोट्स रूपांतरित करा आणि "-", इ.
  • 2. डायनॅमिक असेंबली sql कधीही वापरू नका, तुम्ही पॅरामीटराइज्ड sql वापरू शकता किंवा डेटा क्वेरी आणि ऍक्सेससाठी थेट संग्रहित प्रक्रिया वापरू शकता.
  • 3. प्रशासक विशेषाधिकारांसह डेटाबेस कनेक्शन कधीही वापरू नका, प्रत्येक अनुप्रयोगासाठी मर्यादित विशेषाधिकारांसह स्वतंत्र डेटाबेस कनेक्शन वापरा.
  • 4. गोपनीय माहिती थेट संचयित करू नका, पासवर्ड आणि संवेदनशील माहिती एन्क्रिप्ट किंवा हॅश आउट करू नका.
  • 5. अनुप्रयोगातील अपवाद माहितीने शक्य तितक्या कमी सूचना दिल्या पाहिजेत आणि मूळ त्रुटी माहिती गुंडाळण्यासाठी सानुकूल त्रुटी माहिती वापरणे चांगले.
  • 6. sql इंजेक्शनची शोध पद्धत सामान्यतः सहाय्यक पद्धतीचा अवलंब करतेसॉफ्टवेअरकिंवा शोधण्यासाठी वेबसाइट प्लॅटफॉर्म, सॉफ्टवेअर सामान्यतः sql इंजेक्शन शोध साधन जेस्की वापरते, वेबसाइट प्लॅटफॉर्ममध्ये Yisi वेबसाइट सुरक्षा प्लॅटफॉर्म शोध साधन आहे. MDCSOFT SCAN et al.MDCSOFT-IPS वापरल्याने SQL इंजेक्शन, XSS हल्ल्यांपासून प्रभावीपणे बचाव होऊ शकतो.

SQL इंजेक्शन प्रतिबंधित करा

पर्ल आणि पीएचपी सारख्या स्क्रिप्टिंग भाषांमध्ये तुम्ही एसक्यूएल इंजेक्शन रोखण्यासाठी वापरकर्त्याने प्रविष्ट केलेला डेटा वाचवू शकता.

PHP साठी MySQL एक्स्टेंशन mysqli_real_escape_string() फंक्शन विशेष इनपुट कॅरेक्टर्समधून बाहेर पडण्यासाठी पुरवतो.

if (get_magic_quotes_gpc()) 
{
  $name = stripslashes($name);
}
$name = mysqli_real_escape_string($conn, $name);
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

लाईक स्टेटमेंट मध्ये इंजेक्शन

सारखे क्वेरी करताना, जर वापरकर्त्याने "_" आणि "%" सह मूल्ये प्रविष्ट केली तर हे होईल: वापरकर्त्याला मूळतः "abcd_" क्वेरी करायची होती, परंतु क्वेरी परिणामांमध्ये "abcd_", "abcde", आणि "abcdf" समाविष्ट आहे " इ.

PHP स्क्रिप्टमध्ये आपण वरील परिस्थिती हाताळण्यासाठी addcslashes() फंक्शन वापरू शकतो, जसे की खालील उदाहरणात:

$sub = addcslashes(mysqli_real_escape_string($conn, "%something_"), "%_");
// $sub == \%something\_
 mysqli_query($conn, "SELECT * FROM messages WHERE subject LIKE '{$sub}%'");

addcslashes() फंक्शन निर्दिष्ट वर्णापूर्वी बॅकस्लॅश जोडते.

वाक्यरचना स्वरूप:

addcslashes(string,characters)
मापदंडवर्णन
स्ट्रिंगआवश्यक आहे.तपासण्यासाठी स्ट्रिंग निर्दिष्ट करते.
वर्णऐच्छिक.addcslashes() द्वारे प्रभावित वर्णांची वर्ण किंवा श्रेणी निर्दिष्ट करते.

होप चेन वेइलांग ब्लॉग ( https://www.chenweiliang.com/ ) सामायिक केले "MySQL sql इंजेक्शन कसे प्रतिबंधित करते? sql इंजेक्शन तत्त्व आणि प्रतिबंध", ते तुम्हाला मदत करेल.

या लेखाची लिंक सामायिक करण्यासाठी आपले स्वागत आहे:https://www.chenweiliang.com/cwl-500.html

नवीनतम अपडेट्स मिळवण्यासाठी चेन वेइलियांगच्या ब्लॉगच्या टेलिग्राम चॅनेलवर आपले स्वागत आहे!

🔔 चॅनल टॉप डिरेक्टरीमध्ये मौल्यवान "ChatGPT Content Marketing AI टूल वापर मार्गदर्शक" मिळवणारे पहिले व्हा! 🌟
📚 या मार्गदर्शकामध्ये प्रचंड मूल्य आहे, 🌟ही एक दुर्मिळ संधी आहे, ती चुकवू नका! ⏰⌛💨
आवडल्यास शेअर आणि लाईक करा!
तुमचे शेअरिंग आणि लाईक्स ही आमची सतत प्रेरणा आहे!

 

评论 评论

आपला ईमेल पत्ता प्रकाशित केला जाणार नाही. 用 项 已 用 * लेबल

वर स्क्रोल करा