MySQL የ sql መርፌን እንዴት ይከላከላል? የ SQL መርፌ መርህ እና መከላከል

MySQLsql መርፌን እንዴት መከላከል ይቻላል? የ SQL መርፌ መርህ እና መከላከል

MySQL እና SQL መርፌ

በተጠቃሚው የገባውን መረጃ በድረ-ገጽ ወስደህ ወደ ሀ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 ውስጥ ገብቷል፣ ይህም በተጠቃሚዎች ሰንጠረዥ ውስጥ ያሉትን ሁሉንም መረጃዎች ይሰርዛል።

mysqli_query() በPHP ውስጥ ብዙ የSQL መግለጫዎችን እንዲፈጽም አይፈቀድለትም ነገር ግን በSQLite እና PostgreSQL ውስጥ ብዙ የSQL መግለጫዎች በአንድ ጊዜ ሊፈጸሙ ይችላሉ፣ ስለዚህ የእነዚህን ተጠቃሚዎች ውሂብ በጥብቅ ማረጋገጥ አለብን።

የ SQL መርፌን ለመከላከል ለሚከተሉት ነጥቦች ትኩረት መስጠት አለብን.

  • 1. የተጠቃሚውን ግብአት በፍጹም አትመኑ።የተጠቃሚውን ግቤት አረጋግጥ፣ መደበኛ አገላለጾችን መጠቀም ትችላለህ፣ ወይም ርዝመቱን መገደብ ትችላለህ፣ ነጠላ ጥቅሶችን ቀይር እና “-”፣ ወዘተ.
  • 2. ተለዋዋጭ ስብሰባ sql በጭራሽ አይጠቀሙ፣ parameterized sql መጠቀም ወይም ለውሂብ መጠይቅ እና መዳረሻ የተከማቹ ሂደቶችን በቀጥታ መጠቀም ይችላሉ።
  • 3. የውሂብ ጎታ ግንኙነቶችን ከአስተዳዳሪ ልዩ መብቶች ጋር በጭራሽ አይጠቀሙ፣ ለእያንዳንዱ መተግበሪያ የተወሰኑ ልዩ መብቶች ያላቸውን የተለየ የውሂብ ጎታ ግንኙነቶችን ይጠቀሙ።
  • 4. ሚስጥራዊ መረጃን በቀጥታ አታከማች፣ የይለፍ ቃሎችን እና ሚስጥራዊ መረጃዎችን አታመሰጥር ወይም ሃሽ አታውጣ።
  • 5. የመተግበሪያው ልዩ መረጃ በተቻለ መጠን ጥቂት ፍንጮችን መስጠት አለበት እና ዋናውን የስህተት መረጃ ለመጠቅለል ብጁ የስህተት መረጃን መጠቀም ጥሩ ነው።
  • 6. የ sql መርፌን የመለየት ዘዴ በአጠቃላይ ረዳትን ይቀበላልሾክወይም የድረ-ገጹን መድረክ ለማወቅ ሶፍትዌሩ በአጠቃላይ sql መርፌ ማወቂያ መሳሪያ jsky ይጠቀማል፣ እና የድረ-ገጹ መድረክ የ Yisi ድህረ ገጽ የደህንነት መድረክ ማወቂያ መሳሪያ አለው። MDCSOFT SCAN እና ሌሎች.MDCSOFT-IPSን መጠቀም ከ SQL መርፌ፣ XSS ጥቃቶች፣ ወዘተ.

የ SQL መርፌን ይከላከሉ

እንደ ፐርል እና ፒኤችፒ ባሉ የስክሪፕት ቋንቋዎች የ SQL መርፌን ለመከላከል በተጠቃሚው የገባውን ውሂብ ማምለጥ ይችላሉ።

የ 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 ስክሪፕት ውስጥ የ addcslash () ተግባርን ከላይ ያለውን ሁኔታ ለመቆጣጠር እንችላለን።

$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 () የተጎዱትን የቁምፊዎች ቁምፊ ወይም ክልል ይገልጻል።

ተስፋ Chen Weiliang ብሎግ ( https://www.chenweiliang.com/ ) የተጋራ " MySQL የ sql መርፌን እንዴት ይከላከላል? sql መርፌ መርህ እና መከላከል "ይረዳሃል።

እንኳን በደህና መጡ የዚህን ጽሁፍ ማገናኛ ለማጋራት፡-https://www.chenweiliang.com/cwl-500.html

አዳዲስ መረጃዎችን ለማግኘት ወደ የቼን ዌይሊያንግ ብሎግ የቴሌግራም ቻናል እንኳን በደህና መጡ።

🔔 ጠቃሚ የሆነውን "ChatGPT Content Marketing AI Tool Usage Guide" በቻናል ከፍተኛ ማውጫ ውስጥ ለማግኘት የመጀመሪያው ይሁኑ! 🌟
📚 ይህ መመሪያ ትልቅ ዋጋ አለው፣ 🌟ይህ ያልተለመደ እድል ነው፣ እንዳያመልጥዎ! ⏰⌛💨
ከወደዳችሁት ሼር እና ላይክ አድርጉ!
የእርስዎ ማጋራት እና መውደዶች ቀጣይ ማበረታቻዎቻችን ናቸው!

 

评论ሺ评论评论评论 ፡፡

የኢሜል አድራሻዎ አይታተምም ፡፡ 项 已 用 ፡፡ * 标注

ወደ ላይ ይሸብልሉ