Penghadan Parameter Pernyataan PDO PHP: Nama Jadual dan Lajur
Pernyataan yang disediakan dalam Objek Data PHP (PDO) menyediakan keselamatan yang dipertingkatkan dengan menghalang suntikan SQL serangan. Walau bagaimanapun, adalah tidak mungkin untuk menghantar nama jadual atau lajur secara dinamik sebagai parameter kepada pernyataan yang disediakan.
Mengapa Had Wujud
Penyata yang disediakan oleh PDO direka bentuk untuk memastikan semua pengguna input disahkan sebelum dilaksanakan sebagai pertanyaan SQL. Membenarkan nama jadual atau lajur menjadi parameter akan mewujudkan kelemahan keselamatan kerana pengguna berniat jahat berpotensi memanipulasi pertanyaan dan mendapat akses tanpa kebenaran kepada data sensitif.
Penyelesaian Alternatif
Kepada masukkan nama jadual dengan selamat ke dalam pertanyaan SQL, anda harus menapis dan membersihkan data secara manual. Satu pendekatan ialah menggunakan pernyataan suis() untuk mencipta senarai putih nama jadual yang dibenarkan:
function buildQuery($get_var) { switch ($get_var) { case 1: $tbl = 'users'; break; default: throw new Exception('Invalid table name'); } $sql = "SELECT * FROM $tbl"; }
Dengan menggunakan kaedah ini, anda boleh memastikan bahawa hanya input pengguna yang sepadan dengan nilai yang dijangkakan boleh digunakan dalam pertanyaan. Pendekatan ini menghalang potensi kelemahan keselamatan sambil mengekalkan faedah kenyataan yang disediakan.
Atas ialah kandungan terperinci Bolehkah Penyata Disediakan PHP PDO Mengendalikan Nama Jadual dan Lajur Dinamik sebagai Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!