Mencegah SQL Injection dalam ASP.Net
Serangan suntikan SQL boleh mengeksploitasi kelemahan dalam aplikasi web untuk melaksanakan kod hasad pada pelayan pangkalan data. Untuk mengelakkan serangan ini dalam ASP.Net, adalah penting untuk melaksanakan pengesahan input yang betul dan teknik parameterisasi pertanyaan.
Menggunakan Pertanyaan Berparameter
Satu kaedah mencegah suntikan SQL ialah untuk menggunakan pertanyaan berparameter, yang memisahkan pernyataan SQL daripada input pengguna. Ini membolehkan enjin pangkalan data mengendalikan pernyataan SQL dan menghalang suntikan kod berniat jahat.
Contohnya:
SqlCommand cmd = new SqlCommand("Select * from Table where ref=@ref", con); cmd.Parameters.AddWithValue("@ref", 34);
Pertanyaan ini parameter pembolehubah @ref, memastikan input pengguna tidak dilampirkan terus pada pernyataan SQL.
Mengelakkan OpenQuery
Satu lagi kerentanan berlaku apabila menggunakan kaedah OpenQuery, yang secara dinamik melaksanakan pertanyaan SQL yang diluluskan sebagai rentetan. Ini boleh membawa kepada suntikan SQL jika rentetan tidak disahkan dengan betul.
Daripada menggunakan OpenQuery, pertimbangkan untuk melaksanakan pertanyaan secara terus menggunakan pertanyaan berparameter, seperti ditunjukkan di bawah:
Dim conn As SqlConnection = New SqlConnection("your SQL Connection String") Dim cmd As SqlCommand = conn.CreateCommand() cmd.CommandText = "Select * from db...table where investor = @investor" Dim parameter As SqlParameter = cmd.CreateParameter() parameter.DbType = SqlDbType.Int parameter.ParameterName = "@investor" parameter.Direction = ParameterDirection.Input parameter.Value = 34
Langkah Tambahan
Selain teknik ini, pertimbangkan untuk melaksanakan langkah tambahan untuk mencegah SQL suntikan:
Kesimpulan
Dengan memahami dan melaksanakan teknik ini, anda boleh menghalang suntikan SQL dengan berkesan dalam aplikasi ASP.Net anda, melindungi pangkalan data dan aplikasi anda daripada akses tanpa kebenaran dan manipulasi data berniat jahat.
Atas ialah kandungan terperinci Bagaimanakah Pertanyaan Berparameter dan Pengesahan Input Menghalang Suntikan SQL dalam ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!