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
Mary-Kate Olsenasal
2024-12-31 18:03:11867semak imbas

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%')

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 +"%")

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%')

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!

Kenyataan:
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