Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Parameter dengan Selamat dengan Pernyataan SQL LIKE untuk Mencegah Suntikan SQL?

Bagaimanakah Saya Boleh Menggunakan Parameter dengan Selamat dengan Pernyataan SQL LIKE untuk Mencegah Suntikan SQL?

Mary-Kate Olsen
Lepaskan: 2024-12-31 18:03:11
asal
850 orang telah melayarinya

How Can I Safely Use Parameters with SQL LIKE Statements to Prevent SQL Injection?

Menggunakan Parameter dalam SQL LIKE Statement

Apabila mencipta fungsi carian, adalah penting untuk menggunakan parameter untuk melindungi daripada ancaman suntikan SQL. Walau bagaimanapun, menggunakan parameter dalam pernyataan LIKE mungkin menimbulkan cabaran, seperti yang ditunjukkan oleh pertanyaan berikut:

SELECT * FROM compliance_corner WHERE (body LIKE '%@query%') OR (title LIKE '%@query%')
Salin selepas log masuk

Pertanyaan ini terdedah kepada suntikan SQL kerana parameter tidak dibersihkan dengan betul. Untuk membetulkan isu ini, parameter mesti ditakrifkan dan ditetapkan dengan betul menggunakan nilai seperti:

Dim cmd as New SqlCommand(
 "SELECT * FROM compliance_corner"_
  + " WHERE (body LIKE @query )"_ 
  + " OR (title LIKE @query)")

cmd.Parameters.Add("@query", "%" +searchString +"%")
Salin selepas log masuk

Dalam contoh ini, parameter @query ditakrifkan menggunakan nilai searchString. Ini memastikan bahawa input pengguna, searchString, dibersihkan dengan betul dan pertanyaan dilindungi daripada suntikan SQL.

Selain itu, perlu diperhatikan bahawa pertanyaan itu mengembalikan hasil apabila dilaksanakan terus dalam SQL Server:

SELECT * FROM compliance_corner WHERE (body LIKE '%max%') OR (title LIKE '%max%')
Salin selepas log masuk

Ini kerana pertanyaan dilaksanakan tanpa parameter, dan pernyataan LIKE membandingkan rentetan %max% secara langsung dengan kandungan lajur badan dan tajuk. Walau bagaimanapun, apabila dilaksanakan dengan parameter, pernyataan LIKE membandingkan nilai parameter, @query, dengan kandungan lajur, yang dibersihkan dengan betul, menyebabkan tiada padanan dikembalikan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Parameter dengan Selamat dengan Pernyataan SQL LIKE untuk Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan