Rumah >pangkalan data >tutorial mysql >Pertanyaan Berparameter lwn. Penukaran Teks Langsung: Pendekatan Mana Yang Terbaik Mencegah Suntikan SQL?
Mempertahankan Suntikan SQL: Pertanyaan Berparameter lwn. Transformasi Teks Langsung
Dalam serangan suntikan SQL, input berniat jahat dimasukkan ke dalam pertanyaan pangkalan data, yang berpotensi mengubah pelaksanaan yang dimaksudkan dan mendedahkan data sensitif. Dua kaedah untuk mengurangkan kerentanan ini termasuk pertanyaan berparameter dan penukaran teks langsung.
Pertanyaan berparameter
Pertanyaan berparameter menggunakan ruang letak (cth., "@TagNbr") untuk mewakili nilai yang akan diganti sebelum pertanyaan dilaksanakan. Ini menghalang input penyerang daripada mengubah suai kenyataan SQL secara langsung.
<code>SqlCommand cmd = new SqlCommand("INSERT INTO dbo.Cars " +"VALUES(@TagNbr);" , conn); cmd.Parameters.Add("@TagNbr", SqlDbType.Int); cmd.Parameters["@TagNbr"].Value = txtTagNumber.Text;</code>
Dalam contoh ini, input daripada txtTagNumber ditambahkan sebagai parameter pada pemegang tempat @TagNbr, memastikan bahawa input disahkan dan diubah dengan betul sebelum dimasukkan dalam pertanyaan.
Penukaran teks langsung
Penukaran teks langsung melibatkan penukaran input kepada jenis data yang betul (cth., integer) sebelum membina pertanyaan.
<code>int tagnumber = txtTagNumber.Text.ToInt16(); /* EDITED */ INSERT into Cars values(tagnumber); /* then is it the same? */</code>
Walaupun pendekatan ini mengurangkan risiko suntikan SQL, pendekatan ini bergantung pada pengaturcara mengendalikan penukaran jenis dengan betul dan mungkin tidak sentiasa mencukupi untuk melindungi daripada input berniat jahat.
Kelebihan pertanyaan berparameter
Pertanyaan berparameter mempunyai beberapa kelebihan berbanding penukaran teks langsung:
Atas ialah kandungan terperinci Pertanyaan Berparameter lwn. Penukaran Teks Langsung: Pendekatan Mana Yang Terbaik Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!