Sidee MySQL uga hortagtaa duritaanka sql? Mabda'a irbada SQL iyo ka hortagga

MySQLSidee looga hortagaa duritaanka sql? Mabda'a irbada SQL iyo ka hortagga

MySQL iyo SQL duritaan

Haddii aad ka qaadato xogta uu isticmaaluhu soo galiyay bogga shabakadda oo aad geliso adatabase MySQL, ka dibna waxaa laga yaabaa in SQL dhibaato ammaanka duritaanka.

Cutubkani waxa uu ku bari doonaa sida looga hortago cirbadaynta SQL iyo isticmaalka qoraalada si loo kala shaandheeyo xarfaha la duray ee SQL.

Waxa loogu yeero cirbadeynta SQL waa in la khiyaaneeyo server-ka si uu u fuliyo amarrada SQL ee xaasidnimada leh iyadoo la gelinayo amarada SQL foomka shabakada si loo gudbiyo ama loo geliyo xargaha weydiinta magaca domain ama codsiga bogga.

Waa inaan waligeen aamino gelinta isticmaalaha, waa inaan u qaadanaa in xogta isticmaaluhu ay tahay mid aan badbaado lahayn, dhammaanteen waxaan u baahanahay inaan sifeyno xogta gelinta isticmaalaha.

Tusaalaha soo socda, magaca isticmaale ee la galiyay waa inuu noqdaa isku darka xarfo, nambaro, iyo hoosta, iyo magaca isticmaaluhu waa inuu u dhexeeyaa 8 iyo 20 xaraf:

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

Aan eegno xaalada SQL ee dhacda marka aan la sifeynin jilayaal gaar ah:

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

Qoraalka duritaan ee sare, ma aanaan shaandhayn doorsoomaha $name, bayaanka SQL ee aynaan u baahnayn waxa la geliyaa $name, kaas oo tirtiri doona dhammaan xogta ku jirta miiska isticmaalayaasha.

mysqli_query() ee PHP ku jira looma ogola inay fuliyaan weedho SQL badan, laakiin SQLite iyo PostgreSQL waxay fulin karaan hadalo badan oo SQL isku mar ah, marka waxaan u baahanahay inaan si adag u xaqiijino xogta isticmaalayaashan.

Si looga hortago cirbadeynta SQL, waxaan u baahanahay inaan fiiro gaar ah u yeelano qodobada soo socda:

  • 1. Waligaa ha aaminin gelinta isticmaalaha.Hubi gelinta isticmaalaha, waxaad isticmaali kartaa tibaaxo joogto ah, ama xaddid dhererka; beddel hal-xigasho iyo labanlaab "-", iwm.
  • 2. Weligaa ha isticmaalin isku-xidhka firfircoonida sql, waxaad isticmaali kartaa cabbirka sql ama waxaad si toos ah u isticmaali kartaa habraacyada kaydsan ee weydiinta xogta iyo helitaanka.
  • 3. Weligaa ha isticmaalin isku xirka xogta macluumaadka ee mudnaanta maamulaha, isticmaal xog ururin gaar ah oo leh mudnaanta xaddidan codsi kasta.
  • 4. Si toos ah ha u kaydin macluumaadka sirta ah, sir ha dhigin ama ha saarin furaha sirta ah iyo macluumaadka xasaasiga ah.
  • 5. Macluumaadka ka reeban codsigu waa inuu bixiyaa tilmaamo yar intii suurtagal ah, waxaana fiican in la isticmaalo macluumaadka khaladka gaarka ah si loo duubo macluumaadka khaladka asalka ah
  • 6. Habka ogaanshaha ee duritaanka sql guud ahaan wuxuu qaataa caawiye软件Ama goobta mareegaha si loo ogaado, software-ku guud ahaan wuxuu adeegsadaa qalabka lagu ogaanayo cirbadeynta sql jsky, madal mareegaha ayaa leh aaladda ogaanta goobta amniga ee website-ka Yisi. MDCSOFT SCAN iyo al.Isticmaalka MDCSOFT-IPS waxay si wax ku ool ah isaga difaaci kartaa duridda SQL, weerarrada XSS, iwm.

Kahortagga cirbadeynta SQL

Luqadaha qoraalka sida Perl iyo PHP waxaad ka baxsan kartaa xogta uu galo isticmaaluhu si looga hortago cirbadeynta SQL.

Kordhinta MySQL ee PHP waxay bixisaa shaqada mysqli_real_escape_string() si looga baxsado jilayaasha gelinta ee gaarka ah.

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

Duritaan ee sida Bayaanada

Marka la waydiinayo sida, haddii isticmaaluhu uu galo qiyamka "_" iyo "%", tani way dhici doontaa: isticmaaluhu wuxuu markii hore rabay inuu waydiiyo "abcd_", laakiin natiijooyinka waydiinta waxaa ka mid ah "abcd_", "abcde", iyo "abcdf "Iwm.; dhibaatadu sidoo kale waxay dhacdaa marka isticmaaluhu rabo inuu waydiiyo "30%" (xusuus: boqolkiiba soddon).

Qoraalka PHP waxaan u isticmaali karnaa addcslash () shaqada si aan u maareyno xaaladda kore, sida tusaalahan soo socda:

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

Shaqada addcslashes() waxay ku daraysaa dib-u-dhac ka hor dabeecadda la cayimay.

Qaabka syntax:

addcslashes(string,characters)
Xusuussharaxaad
xarafLoo baahan yahayWuxuu qeexayaa xargaha si loo hubiyo.
charactersIkhtiyaariWuxuu qeexayaa jilaha ama kala duwanaanshaha jilayaasha ay saameeyeen addcslashes().

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) wadaaga "Sidee MySQL uga hortagtaa duritaanka sql? sql mabda'a duritaanka iyo ka hortagga", way ku caawin doontaa.

Ku soo dhawoow inaad wadaagto xiriirka maqaalkan:https://www.chenweiliang.com/cwl-500.html

Ku soo dhawoow kanaalka Telegramka ee Chen Weiliang's blog si aad u hesho wararkii ugu dambeeyay!

🔔 Noqo kuwa ugu horreeya ee hela "ChatGPT Content Suuqgeynta AI Hagaha Isticmaalka Qalabka" ee tusaha sare ee kanaalka! 🌟
📚 Hagahan waxa uu ka kooban yahay qiimo aad u weyn, 🌟Tani waa fursad naadir ah, ha seegin! ⏰⌛💨
Share iyo like saar hadaad jeceshahay!
Wadaagistaada iyo jeceylkaaga ayaa ah dhiirigelintayada joogtada ah!

 

评论

Cinwaanka emailkaaga lama daabici doono. 项 已 用 * Calaamadda

kor ugu rog