Me pehea te aukati a MySQL i te werohanga sql? Tikanga weronga SQL me te aukati

MySQLMe pehea te aukati i te werohanga sql? Tikanga weronga SQL me te aukati

MySQL me te werohanga SQL

Mena ka tango koe i nga raraunga i whakauruhia e te kaiwhakamahi ma te wharangi paetukutuku ka whakauruhia ki roto i tepātengi raraunga MySQL, ka puta pea he raruraru haumarutanga werohanga SQL.

Ma tenei upoko e whakaatu me pehea te aukati i te werohanga SQL me te tātari i nga tohu i werohia ki te SQL ma nga tuhinga.

Ko te mea e kiia nei ko te werohanga SQL ko te whakapohehe i te tūmau ki te whakahaere i nga whakahau SQL kino ma te whakauru i nga whakahau SQL ki te puka tukutuku ki te tuku, ki te whakauru ranei i te aho uiui o te ingoa rohe, te tono wharangi ranei.

Kaua rawa tatou e whirinaki ki te whakaurunga a te kaiwhakamahi, me whakaaro tatou he kino nga raraunga whakaurunga kaiwhakamahi, a me tarai katoa tatou i nga raraunga whakaurunga kaiwhakamahi.

I roto i te tauira e whai ake nei, ko te ingoa kaiwhakamahi kua whakauruhia he huinga o nga reta, nga nama, me nga tohu, me te ingoa kaiwhakamahi kei waenga i te 8 ki te 20 nga tohu te roa:

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

Kia titiro tatou ki te ahuatanga SQL e puta ana i te kore e tātarihia nga tohu motuhake:

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

I roto i te tauākī werohanga i runga ake nei, kaore matou i tātari i te taurangi o te $ingoa, a ko te tauākī SQL e kore e hiahiatia ka whakauruhia ki roto i te $ingoa, ka mukua nga raraunga katoa i te ripanga kaiwhakamahi.

mysqli_query() i roto i te PHP kaore e whakaaetia kia mahia nga korero SQL maha, engari i roto i te SQLite me te PostgreSQL, he maha nga korero SQL ka taea te whakahaere i te wa kotahi, no reira me tino manatoko nga raraunga o enei kaiwhakamahi.

Hei aukati i te werohanga SQL, me aro tatou ki nga waahanga e whai ake nei:

  • 1. Kaua rawa e whirinaki ki te whakauru kaiwhakamahi.Tirohia te whakaurunga a te kaiwhakamahi, ka taea e koe te whakamahi i nga korero noa, te whakawhāiti ranei i te roa; hurihia nga korukī kotahi me te rua "-", etc.
  • 2. Kaua rawa e whakamahi i te sql hui hihiri, ka taea e koe te whakamahi i te sql kua whakaritea, te whakamahi tika ranei i nga tikanga rongoa mo te uiui raraunga me te uru.
  • 3. Kaua rawa e whakamahi i nga hononga patengi raraunga me nga mana whakahaere, whakamahia nga hononga papaa raraunga motuhake me nga mana iti mo ia tono.
  • 4. Kaua e rokiroki tika i nga korero matatapu, whakamuna, whakamaarama ranei i nga kupuhipa me nga korero tairongo.
  • 5. Ko nga korero rereke o te tono kia iti noa nga tohu ka taea, a he pai ake te whakamahi i nga korero hapa ritenga ki te takai i nga korero hapa taketake.
  • 6. Ko te tikanga rapunga o te werohanga sql i te nuinga o te waa he awhina软件Ko te papanga paetukutuku ranei ki te kitea, ka whakamahia e te rorohiko te taputapu sql werohanga jsky, a kei te papaaata paetukutuku te taputapu tirotiro mo te papaapapa haumarutanga paetukutuku Yisi. MDCOFT SCAN et al.Ma te whakamahi i te MDCOFT-IPS ka taea te tiaki i te werohanga SQL, nga whakaeke XSS, me era atu.

Aukati i te werohanga SQL

I roto i nga reo tuhi penei i te Perl me te PHP ka taea e koe te mawhiti i nga raraunga i whakauruhia e te kaiwhakamahi hei aukati i te werohanga SQL.

Ko te toronga MySQL mo PHP e whakarato ana i te mahi mysqli_real_escape_string() hei mawhiti i nga tohu whakauru motuhake.

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

Werohia ki nga Tauākī Pērā

Ina patapatai penei, mena he "_" me "%" te uara i whakauruhia e te kaiwhakamahi, ka penei: i hiahia te kaiwhakamahi ki te patai "abcd_", engari he "abcd_", "abcde", me "abcdf" kei roto. te hua patai aha atu, ka puta ano te raru ina hiahia te kaiwhakamahi ki te patai "30%" (note: toru tekau ōrau).

I roto i te tuhinga PHP ka taea e tatou te whakamahi i te mahi addcslashes() hei hapai i nga ahuatanga o runga ake nei, penei i te tauira e whai ake nei:

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

Ko te mahi addcslashes() he taapiri i te whakamuri i mua i te ahua kua tohua.

Hōputu wetereo:

addcslashes(string,characters)
Parapetawhakaahuatanga
ahoE hiahiatia ana.Ka whakapūtā te aho hei taki.
pūāhuaKōwhiringa.Ka whakapūtā te pūāhua, te awhe rānei o ngā pūāhua e pāngia ana e ngā addcslashes().

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) shared "Me pehea te aukati a MySQL i te werohanga sql? sql te parau tumu me te aukati", ka awhina koe.

Nau mai ki te tohatoha i te hono o tenei tuhinga:https://www.chenweiliang.com/cwl-500.html

Nau mai ki te hongere Telegram o te blog a Chen Weiliang ki te tiki i nga korero hou!

🔔 Ko koe te tuatahi ki te tiki i te "ChatGPT Content Marketing AI Tool Usage Guide" i roto i te raarangi o runga hongere! 🌟
📚 He uara nui tenei aratohu, 🌟He waahi onge tenei, kaua e ngaro! ⏰⌛💨
Tohaina me te pai ki te pai koe!
Ko to tiritiri me o hiahia ko to maatau hihiri tonu!

 

发表 评论

Kaore e tukuna to wahitau imeera. 必填 项 已 用 * Tapanga

panuku ki runga