SQL Injection on INSERT with Textbox Comments
Walaupun salah tanggapan bahawa serangan suntikan SQL terhad kepada akses luaran, ia boleh berlaku walaupun dalam dalaman aplikasi seperti tinjauan web. Artikel ini meneroka risiko yang berkaitan dengan serangan suntikan SQL pada pernyataan INSERT yang melibatkan ulasan kotak teks dan menyediakan garis panduan untuk melindungi daripadanya menggunakan .NET 2.0.
Bolehkah SQL Injection Berlaku pada INSERT Statements with Comments?
Ya, suntikan SQL boleh dilakukan pada mana-mana pernyataan SQL yang tidak dilaksanakan dengan betul, termasuk INSERT kenyataan. Jika input pengguna dalam medan ulasan kotak teks digabungkan terus ke dalam pertanyaan SQL tanpa sanitasi yang betul, kod hasad boleh dimasukkan ke dalam pernyataan.
Cara Menjaga Terhadap SQL Injection dalam .NET 2.0
Untuk mengurangkan serangan suntikan SQL dalam .NET 2.0, adalah penting untuk menggunakan pernyataan SQL berparameter. Teknik ini melibatkan menghantar nilai input sebagai parameter kepada pernyataan SQL yang disediakan dan bukannya memasukkannya terus ke dalam rentetan pertanyaan. Dengan berbuat demikian, pernyataan SQL berparameter secara berkesan memisahkan input pengguna daripada pernyataan SQL, menghalang kod hasad daripada dilaksanakan.
Contoh
Pertimbangkan pernyataan INSERT yang terdedah berikut:
string comment = Request.Form["comment"]; string sql = "INSERT INTO Comments VALUES (123, '" + comment + "')";
Dalam contoh ini, ulasan yang diberikan pengguna disatukan terus ke dalam SQL pernyataan, menjadikannya terdedah kepada serangan suntikan SQL.
Melindungi Terhadap Suntikan
Untuk melindungi daripada suntikan SQL, tulis semula pernyataan menggunakan pernyataan SQL berparameter:
using (SqlConnection connection = new SqlConnection(connectionString)) { string sql = "INSERT INTO Comments VALUES (123, @comment)"; using (SqlCommand command = new SqlCommand(sql, connection)) { command.Parameters.AddWithValue("comment", Request.Form["comment"]); command.ExecuteNonQuery(); } }
Dalam kod ini, input pengguna dihantar sebagai parameter bernama @comment, dan Kaedah SqlParameter.AddWithValue memastikan bahawa nilai dilepaskan dengan betul dan dianggap sebagai parameter.
Kesimpulan
Melaksanakan pernyataan SQL berparameter adalah langkah penting dalam melindungi daripada serangan suntikan SQL . Dengan mengasingkan input pengguna daripada pertanyaan SQL, anda boleh mengekalkan amalan pengekodan yang baik dan melindungi aplikasi web anda daripada aktiviti berniat jahat.
Atas ialah kandungan terperinci Bolehkah SQL Injection Berlaku dalam INSERT Statements dengan Komen Yang Diberikan Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!