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

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

Patricia Arquette
Lepaskan: 2024-11-01 23:50:29
asal
284 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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