SQL Injection on INSERT Statement with Comments
Apabila membangunkan aplikasi web, adalah penting untuk melindungi daripada suntikan SQL, walaupun dengan operasi yang dikatakan selamat seperti INSERT pernyataan yang termasuk input pengguna.
Dalam senario khusus ini, di mana borang web tinjauan mengandungi kotak teks untuk ulasan, suntikan SQL memang boleh berlaku jika input ulasan tidak dikendalikan dengan selamat. Pertimbangkan pengguna menyerahkan ulasan berniat jahat berikut:
'); DELETE FROM users; --
Jika pernyataan SQL untuk memasukkan ulasan ini dibina secara naif, ia boleh mengakibatkan pemadaman tanpa kebenaran bagi semua rekod pengguna:
INSERT INTO COMMENTS VALUES(123, '"); DELETE FROM users; -- ');
Untuk mengelakkan serangan sedemikian, adalah penting untuk menggunakan pernyataan SQL berparameter, yang tidak menggabungkan input pengguna ke dalam rentetan pertanyaan. Dalam .NET 2.0, anda boleh menggunakan kelas SqlCommand dengan parameter. Contohnya:
string comment = "..."; // User input int id = 123; string sql = "INSERT INTO COMMENTS (ID, Comment) VALUES (@id, @comment)"; SqlCommand command = new SqlCommand(sql, connection); command.Parameters.AddWithValue("@id", id); command.Parameters.AddWithValue("@comment", comment); command.ExecuteNonQuery();
Dengan menggunakan SQL berparameter kenyataan, anda boleh mengekalkan amalan pengekodan yang baik, melindungi daripada suntikan SQL dan menghalang manipulasi data tanpa kebenaran pada halaman web tinjauan anda.
Atas ialah kandungan terperinci Bagaimanakah Suntikan SQL Boleh Berlaku dalam Pernyataan INSERT, Walaupun dengan Komen Pengguna, dan Bagaimana Ia Boleh Dicegah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!