Pehea e pale aku ai ʻo MySQL i ka sql injection? ʻO ka loina a me ka pale ʻana o SQL injection

MySQLPehea e pale ai i ka sql injection? ʻO ka loina a me ka pale ʻana o SQL injection

MySQL a me SQL injection

Inā ʻoe e lawe i ka ʻikepili i hoʻokomo ʻia e ka mea hoʻohana ma o kahi ʻaoʻao pūnaewele a hoʻokomo i loko o kahiMySQL waihona, a laila aia paha nā pilikia palekana SQL injection.

E hōʻike ana kēia mokuna iā ʻoe pehea e pale aku ai i ka hoʻokele SQL a hoʻohana i nā palapala e kānana i nā huaʻōlelo i injected ma SQL.

ʻO ka mea i kapa ʻia ʻo SQL injection ka mea e hoʻopunipuni ai i ke kikowaena e hoʻokō i nā kauoha SQL ʻino ma o ka hoʻokomo ʻana i nā kauoha SQL i loko o ka palapala pūnaewele e hoʻouna a hoʻokomo i ke kaula nīnau o ka inoa domain a i ʻole ka noi ʻaoʻao.

ʻAʻole pono mākou e hilinaʻi i ka hoʻokomo ʻana o ka mea hoʻohana, pono mākou e manaʻo ʻaʻole palekana ka ʻikepili hoʻokomo mea hoʻohana, a pono mākou āpau e kānana i ka ʻikepili hoʻokomo mea hoʻohana.

Ma kēia laʻana, pono ka inoa inoa i hoʻokomo ʻia i hui pū ʻana o nā leka, nā helu, a me nā kaha lalo, a ʻo ka inoa inoa ma waena o 8 a me 20 mau huaʻōlelo ka lōʻihi:

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

E nānā kākou i ke kūlana SQL e kū nei inā ʻaʻole kānana ʻia nā huaʻōlelo kūikawā:

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

Ma ka ʻōlelo injection i luna, ʻaʻole mākou i kānana i ka hoʻololi ʻana o ka inoa $. ʻO ka ʻōlelo SQL ʻaʻole pono mākou e hoʻokomo ʻia i loko o $ inoa, e holoi ai i nā ʻikepili āpau i ka papa hoʻohana.

ʻAʻole ʻae ʻia ka mysqli_query() ma PHP e hoʻokō i nā ʻōlelo SQL he nui, akā hiki i SQLite a me PostgreSQL ke hoʻokō i nā ʻōlelo SQL he nui i ka manawa like, no laila pono mākou e hōʻoia i ka ʻikepili o kēia mau mea hoʻohana.

No ka pale ʻana iā SQL injection, pono mākou e hoʻolohe i kēia mau mea:

  • 1. Mai paulele i ka mea hoʻohana.E nānā i ka hoʻokomo o ka mea hoʻohana, hiki iā ʻoe ke hoʻohana i nā ʻōlelo maʻamau, a i ʻole ka palena o ka lōʻihi; e hoʻololi i nā huaʻōlelo hoʻokahi a me ka pālua "-", etc.
  • 2. Mai hoʻohana i ka dynamic assembly sql, hiki iā ʻoe ke hoʻohana i ka sql parameterized a i ʻole e hoʻohana pololei i nā kaʻina hana i mālama ʻia no ka huli ʻikepili a me ke komo ʻana.
  • 3. Mai hoʻohana i nā pilina waihona me nā pono luna hoʻomalu, e hoʻohana i nā pilina waihona ʻokoʻa me nā kuleana palena ʻole no kēlā me kēia noi.
  • 4. Mai hoʻopaʻa pololei i ka ʻike huna, hoʻopili a hoʻopuka i nā ʻōlelo huna a me nā ʻike koʻikoʻi.
  • 5. ʻO ka ʻike ʻokoʻa o ka palapala noi e hāʻawi i nā ʻōlelo aʻoaʻo liʻiliʻi e like me ka hiki, a ʻoi aku ka maikaʻi o ka hoʻohana ʻana i ka ʻike hewa maʻamau e kāʻei i ka ʻike hewa kumu.
  • 6. Hoʻohana maʻamau ke ʻano o ka ʻike ʻana o ka sql injectionʻŌnaehanaA i ʻole ka paena pūnaewele e ʻike ai, hoʻohana maʻamau ka polokalamu i ka sql injection detection tool jsky, aia ka paena pūnaewele i ka Yisi website security platform detection tool. MDCOFT SCAN et al.ʻO ka hoʻohana ʻana i ka MDCOFT-IPS hiki ke pale maikaʻi i ka hoʻokele SQL, nā hōʻeha XSS, etc.

Kāohi i ka SQL injection

Ma nā ʻōlelo kākau ʻōlelo e like me Perl a me PHP hiki iā ʻoe ke pakele i ka ʻikepili i hoʻokomo ʻia e ka mea hoʻohana e pale aku i ka hoʻokele SQL.

Hāʻawi ka MySQL extension no PHP i ka hana mysqli_real_escape_string() e pakele i nā huaʻōlelo hoʻokomo kūikawā.

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

Injection ma Like Statements

I ka nīnau ʻana e like me, inā hoʻokomo ka mea hoʻohana i nā waiwai me "_" a me "%", e hana ʻia kēia: makemake mua ka mea hoʻohana e nīnau iā "abcd_", akā ʻo nā hopena hulina e pili ana i "abcd_", "abcde", a me "abcdf " Etc.; hiki mai ka pilikia ke makemake ka mea hoʻohana e nīnau "30%" (nota: kanakolu pakeneka).

Ma kahi palapala PHP hiki iā mākou ke hoʻohana i ka hana addcslashes () e mālama i ke kūlana i luna, e like me kēia hiʻohiʻona:

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

Hoʻohui ka hana addcslashes () i kahi backslash ma mua o ke ʻano i kuhikuhi ʻia.

Hōʻano huaʻōlelo:

addcslashes(string,characters)
hāmeʻaho'ākāka
kaulaPono.Hōʻike i ke kaula e nānā.
huapalapalaKoho.Hōʻike i ke ʻano a i ʻole ka laulā o nā huaʻōlelo i hoʻopili ʻia e nā addcslashes().

Hope Chen Weiliang Blog ( https://www.chenweiliang.com/ ) kaʻana like "Pehea ʻo MySQL e pale ai i ka sql injection? sql injection principle and prevention", e kōkua ia iā ʻoe.

Welina mai e kaʻana like i ka loulou o kēia ʻatikala:https://www.chenweiliang.com/cwl-500.html

Welina mai i ke kahawai Telegram o ka moʻomanaʻo ʻo Chen Weiliang e kiʻi i nā mea hou loa!

🔔 E lilo i mea mua e kiʻi i ka waiwai nui "ChatGPT Content Marketing AI Tool Usage Guide" ma ka papa kuhikuhi kiʻekiʻe. 🌟
📚 He waiwai nui kēia alakaʻi, 🌟He manawa kakaikahi kēia, mai poina! ⏰⌛💨
Kaʻana like a like inā makemake ʻoe!
ʻO kāu kaʻana like a me kou makemake ʻo kā mākou hoʻoikaika mau!

 

评论

ʻAʻole e paʻi ʻia kāu leka uila. Hoʻohana ʻia nā kahua koi * Label

ʻōwili i luna