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)
Parapeta | whakaahuatanga |
---|---|
aho | E hiahiatia ana.Ka whakapūtā te aho hei taki. |
pūāhua | Kō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!
📚 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!