Papa Kuhikuhi ʻatikala
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ʻa | ho'ākāka |
---|---|
kaula | Pono.Hōʻike i ke kaula e nānā. |
huapalapala | Koho.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!
📚 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!