Pertanyaan Berparameter: Pertahanan Teguh Terhadap Suntikan SQL
Suntikan SQL kekal sebagai ancaman yang lazim, mampu menjejaskan keselamatan pangkalan data. Pertanyaan berparameter menawarkan penyelesaian yang sangat berkesan dengan mengasingkan data yang dibekalkan pengguna daripada kod SQL itu sendiri. Ini menghalang kod hasad daripada dilaksanakan, melindungi pangkalan data anda.
Membina Pertanyaan Berparameter
Pertimbangkan pertanyaan yang terdedah ini:
<code class="language-sql">"SELECT foo FROM bar WHERE baz = '" & fuz & "'"</code>
Ini terdedah kepada suntikan SQL. Alternatif yang lebih selamat menggunakan parameter ialah:
<code class="language-vbscript">WITH command .Parameters.Count = 1 .Parameters.Item(0).ParameterName = "@baz" .Parameters.Item(0).Value = fuz END WITH</code>
Dalam SQL Server, parameterisasi kelihatan seperti ini:
<code class="language-sql">DIM sql AS STRING = "SELECT foo FROM bar WHERE baz= @Baz" USING cn AS NEW SqlConnection("YOUR CONNECTION STRING"), _ cmd AS NEW SqlCommand(sql, cn) cmd.Parameters.Add("@Baz", SqlDbType.VarChar, 50).Value = baz RETURN cmd.ExecuteScalar().ToString() END USING</code>
Kelebihan Melangkaui Keselamatan
Faedah melangkaui keselamatan:
Prosedur Tersimpan dan Parameterisasi: Pendekatan Gabungan
Walaupun prosedur tersimpan menawarkan beberapa kelebihan keselamatan, ia bukan pengganti untuk pertanyaan berparameter. Parameter mesti masih digunakan semasa memanggil prosedur tersimpan untuk mengelakkan kelemahan suntikan.
Penggunaan pertanyaan berparameter yang konsisten adalah penting untuk keselamatan aplikasi yang mantap, prestasi yang lebih baik dan kualiti kod yang dipertingkatkan.
Atas ialah kandungan terperinci Bagaimanakah Pertanyaan Berparameter Dapat Melindungi Terhadap Serangan Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!