Ciamar a chuireas MySQL casg air in-stealladh sql? Prionnsabal stealladh SQL agus casg

MySQLCiamar a chuireas tu casg air in-stealladh sql? Prionnsabal stealladh SQL agus casg

MySQL agus stealladh SQL

Ma bheir thu an dàta a chuir an neach-cleachdaidh a-steach tro dhuilleag lìn agus cuir a-steach e ann am faidhleStòr-dàta MySQL, an uairsin dh’ fhaodadh gum bi duilgheadasan tèarainteachd stealladh SQL ann.

Bheir a’ chaibideil seo a-steach dhut mar a chuireas tu casg air in-stealladh SQL agus cleachd sgriobtaichean gus caractaran stealladh ann an SQL a shìoladh.

Is e an in-stealladh SQL ris an canar am frithealaiche a mhealladh gus òrdughan SQL droch-rùnach a chuir an gnìomh le bhith a’ cuir a-steach òrdughan SQL a-steach don fhoirm lìn gus sreang ceist an ainm fearainn no iarrtas na duilleige a chuir a-steach no a chuir a-steach.

Cha bu chòir dhuinn a-riamh earbsa a chuir a-steach bho luchd-cleachdaidh, feumaidh sinn gabhail ris gu bheil dàta cuir a-steach luchd-cleachdaidh cunnartach, agus feumaidh sinn uile dàta cuir a-steach luchd-cleachdaidh a shìoladh.

Anns an eisimpleir a leanas, feumaidh an t-ainm-cleachdaidh a chaidh a chur a-steach a bhith na mheasgachadh de litrichean, àireamhan, agus fo-sgrìobhaidhean, agus feumaidh an t-ainm-cleachdaiche a bhith eadar 8 agus 20 caractar a dh’fhaid:

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

Bheir sinn sùil air an t-suidheachadh SQL a thachras nuair nach eil caractaran sònraichte air an sìoladh:

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

San aithris in-stealladh gu h-àrd, cha do shìol sinn an caochladair de $name.Tha an aithris SQL nach eil a dhìth oirnn ga chur a-steach ann an $name, a sguabas às an dàta gu lèir ann an clàr an luchd-cleachdaidh.

mysqli_query() ann am PHP chan eil e ceadaichte grunn aithrisean SQL a chuir an gnìomh, ach ann an SQLite agus PostgreSQL, faodar grunn aithrisean SQL a chuir gu bàs aig an aon àm, agus mar sin feumaidh sinn dearbhadh teann a dhèanamh air dàta an luchd-cleachdaidh sin.

Gus casg a chuir air in-stealladh SQL, feumaidh sinn aire a thoirt do na puingean a leanas:

  • 1. Na bi a-riamh ag earbsa cuir a-steach neach-cleachdaidh.Thoir sùil air cuir a-steach an neach-cleachdaidh, faodaidh tu abairtean cunbhalach a chleachdadh, no cuingealaich an fhaid; tionndaidh luachan singilte agus dùbailte "-", msaa.
  • 2. Na cleachd fiùghantach sql assembly, faodaidh tu sql parameterized a chleachdadh no modhan stòraidh a chleachdadh gu dìreach airson ceist dàta agus ruigsinneachd.
  • 3. Na cleachd ceanglaichean stòr-dàta gu bràth le sochairean rianaire, cleachd ceanglaichean stòr-dàta fa leth le sochairean cuibhrichte airson gach aplacaid.
  • 4. Na stòraich fiosrachadh dìomhair gu dìreach, na crioptaich no na cuir às do fhaclan-faire agus fiosrachadh mothachail.
  • 5. Bu chòir fiosrachadh eisgeachd an tagraidh cho beag de mholaidhean a thoirt seachad, agus tha e nas fheàrr fiosrachadh mearachd àbhaisteach a chleachdadh gus am fiosrachadh mearachd tùsail a chòmhdach
  • 6. Tha an dòigh lorgaidh sql stealladh sa chumantas a 'gabhail ri cuideachaidhBathar-bogNo an àrd-ùrlar làrach-lìn airson lorg, bidh am bathar-bog mar as trice a’ cleachdadh an inneal lorg stealladh sql jsky, tha inneal lorg àrd-ùrlar tèarainteachd làrach-lìn Yisi air an àrd-ùrlar làrach-lìn. MDCSOFT SCAN et al.Faodaidh cleachdadh MDCSOFT-IPS dìon gu h-èifeachdach an aghaidh in-stealladh SQL, ionnsaighean XSS, msaa.

Cuir casg air stealladh SQL

Ann an cànanan sgrìobhaidh leithid Perl agus PHP faodaidh tu teicheadh ​​​​às an dàta a chuir an neach-cleachdaidh a-steach gus casg a chuir air in-stealladh SQL.

Tha an leudachadh MySQL airson PHP a’ toirt seachad an gnìomh mysqli_real_escape_string() gus faighinn seachad air caractaran cuir a-steach sònraichte.

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

In-stealladh ann an aithrisean Like

Nuair a thathar a' faighneachd mar, ma chuireas an cleachdaiche a-steach luachan le "_" agus "%", tachraidh seo: bha an cleachdaiche airson "abcd_" a cheasnachadh bho thùs, ach tha toraidhean na ceiste a' gabhail a-steach "abcd_", "abcde", agus "abcdf Bidh an duilgheadas cuideachd a’ tachairt nuair a tha an cleachdaiche airson “30%” a cheasnachadh (nota: trithead sa cheud).

Ann an sgriobt PHP is urrainn dhuinn an gnìomh addcslashes () a chleachdadh gus an suidheachadh gu h-àrd a làimhseachadh, mar a tha san eisimpleir a leanas:

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

Bidh an gnìomh addcslashes () a’ cur cùl-taic ris a’ charactar ainmichte.

Cruth co-chòrdadh:

addcslashes(string,characters)
Paramadairtuairisgeul
sreangA dhìth.Sònraich an t-sreang airson sgrùdadh.
caractaranRoghainneil.Sònraichidh seo an caractar no an raon de charactaran air an tug addcslashes ().

An dòchas blog Chen Weiliang ( https://www.chenweiliang.com/ ) co-roinnte “Ciamar a chuireas MySQL casg air in-stealladh sql? prionnsabal stealladh sql agus casg", cuidichidh e thu.

Fàilte gus ceangal an artaigil seo a cho-roinn:https://www.chenweiliang.com/cwl-500.html

Fàilte don t-sianal Telegram de bhlog Chen Weiliang gus na h-ùrachaidhean as ùire fhaighinn!

🔔 Bi mar a’ chiad fhear a fhuair an “Stiùireadh Cleachdadh Inneal AI Margaidheachd Susbaint ChatGPT” luachmhor ann an eòlaire mullach an t-seanail! 🌟
📚 Tha luach mòr anns an stiùireadh seo, 🌟 Is e cothrom ainneamh a tha seo, na caill e! ⏰⌛💨
Roinn agus toil ma thogras tu!
Is e do roinneadh agus do rudan mar ar brosnachadh leantainneach!

 

发表 评论

Cha tèid do sheòladh puist-d fhoillseachadh. 必填 项 已 用 * Label

sgrolaich gu mullach