Rumah  >  Artikel  >  pangkalan data  >  Adakah Penyata Disediakan Memerlukan `mysql_real_escape_string()` untuk Keselamatan?

Adakah Penyata Disediakan Memerlukan `mysql_real_escape_string()` untuk Keselamatan?

Patricia Arquette
Patricia Arquetteasal
2024-11-01 23:50:29197semak imbas

Do Prepared Statements Need `mysql_real_escape_string()` for Security?

Menggunakan mysql_real_escape_string dengan Penyata Disediakan

Soalan:

Adakah perlu menggunakan fungsi mysql_real_escape_string() yang disediakan pernyataan untuk pertanyaan pangkalan data?

Konteks:

Kod yang disediakan menunjukkan pertanyaan pernyataan yang disediakan menggunakan perpustakaan mysqli. Walau bagaimanapun, pada masa ini ia menggunakan fungsi mysql_real_escape_string() untuk membersihkan input pengguna.

<code class="php">$consulta = $_REQUEST["term"]."%";

($sql = $db->prepare('select location from location_job where location like ?'));

$sql->bind_param('s', $consulta);
$sql->execute();</code>

Jawapan:

Tidak, pernyataan yang disediakan memberikan perlindungan yang wujud terhadap suntikan SQL dan manipulasi data apabila digunakan dengan betul. Mereka membersihkan input secara automatik, menjadikan mysql_real_escape_string() berlebihan.

Peningkatan:

Semasa pertanyaan menggunakan pernyataan yang disediakan dengan betul, pengubahsuaian kecil boleh meningkatkan kecekapannya. Daripada menggunakan kaedah bind_param(), kaedah execute() boleh digunakan untuk menghantar parameter secara langsung.

<code class="php">$sql->execute([$consulta]);</code>

Nota Tambahan:

Walaupun kenyataan yang disediakan melindungi terhadap suntikan SQL, mereka tidak memastikan keselamatan data apabila mengeluarkannya ke halaman. Untuk mengelakkan kemungkinan serangan skrip merentas tapak (XSS), anda disyorkan untuk menggunakan htmlspecialchars() untuk mengekod HTML mana-mana data sebelum mengeluarkannya ke penyemak imbas.

Atas ialah kandungan terperinci Adakah Penyata Disediakan Memerlukan `mysql_real_escape_string()` untuk Keselamatan?. 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