MySQL எப்படி sql ஊசியைத் தடுக்கிறது? SQL ஊசி கொள்கை மற்றும் தடுப்பு

MySQL,SQL ஊசி போடுவதை எவ்வாறு தடுப்பது? SQL ஊசி கொள்கை மற்றும் தடுப்பு

MySQL, மற்றும் SQL ஊசி

இணையப் பக்கத்தின் மூலம் பயனரால் உள்ளிடப்பட்ட தரவை எடுத்து, அதை அMySQL தரவுத்தளம், பின்னர் SQL ஊசி பாதுகாப்பு சிக்கல்கள் இருக்கலாம்.

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 ஊசி கண்டறிதல் கருவி jsky ஐப் பயன்படுத்துகிறது, மேலும் வலைத்தள மேடையில் Yisi வலைத்தள பாதுகாப்பு தளம் கண்டறிதல் கருவி உள்ளது. MDCSOFT ஸ்கேன் மற்றும் பலர்.MDCSOFT-IPS ஐப் பயன்படுத்துவது SQL ஊசி, XSS தாக்குதல்கள் போன்றவற்றுக்கு எதிராக திறம்பட பாதுகாக்க முடியும்.

SQL ஊசியைத் தடுக்கவும்

Perl மற்றும் PHP போன்ற ஸ்கிரிப்டிங் மொழிகளில் 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 ஆகியவை அடங்கும். " போன்றவை; பயனர் "30%" (குறிப்பு: முப்பது சதவிகிதம்) வினவ விரும்பும் போது சிக்கல் ஏற்படுகிறது.

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/ ) பகிரப்பட்டது "SQL ஊசியை MySQL எவ்வாறு தடுக்கிறது? sql ஊசி கொள்கை மற்றும் தடுப்பு", இது உங்களுக்கு உதவும்.

இந்தக் கட்டுரையின் இணைப்பைப் பகிர வரவேற்கிறோம்:https://www.chenweiliang.com/cwl-500.html

சமீபத்திய புதுப்பிப்புகளைப் பெற, சென் வெலியாங்கின் வலைப்பதிவின் டெலிகிராம் சேனலுக்கு வரவேற்கிறோம்!

🔔 சேனல் டாப் டைரக்டரியில் மதிப்புமிக்க "ChatGPT Content Marketing AI கருவி பயன்பாட்டு வழிகாட்டியை" பெறுவதில் முதல் நபராக இருங்கள்! 🌟
📚 இந்த வழிகாட்டியில் பெரும் மதிப்பு உள்ளது, 🌟இது ஒரு அரிய வாய்ப்பு, தவறவிடாதீர்கள்! ⏰⌛💨
பிடித்திருந்தால் ஷேர் செய்து லைக் செய்யுங்கள்!
உங்களின் பகிர்வும் விருப்பங்களும் எங்களின் தொடர்ச்சியான ஊக்கம்!

 

发表 评论

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்படாது. தேவையான புலங்கள் பயன்படுத்தப்படுகின்றன * லேபிள்

மேலே உருட்டவும்