Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Penyata WHERE IN dengan Selamat untuk Mencegah Suntikan SQL?

Bagaimanakah Saya Boleh Menggunakan Penyata WHERE IN dengan Selamat untuk Mencegah Suntikan SQL?

DDD
Lepaskan: 2025-01-04 03:26:40
asal
563 orang telah melayarinya

How Can I Safely Use WHERE IN Statements to Prevent SQL Injection?

Mengendalikan Pertanyaan DALAM Dengan Selamat: Memahami DI MANA DALAM Penyata

Apabila bekerja dengan pertanyaan pangkalan data , mendapatkan semula rekod tertentu berdasarkan set nilai adalah keperluan biasa. Pernyataan WHERE IN menyediakan cara yang cekap untuk mencapainya.

Skema dan Niat Pangkalan Data

Pertimbangkan pangkalan data berikut jadual:

CREATE TABLE IF NOT EXISTS tab (_id integer PRIMARY KEY AUTOINCREMENT, obj text NOT NULL);
Salin selepas log masuk

Anda berhasrat untuk mendapatkan semula rekod di mana nilai lajur obj sepadan dengan senarai pembolehubah, yang mungkin terdedah kepada suntikan SQL jika tidak dikendalikan dengan betul.

Pendekatan Pertama: Kaedah Manual

Percubaan untuk membina pertanyaan secara manual menggunakan list_of_vars dan join() untuk menjana rentetan pemegang tempat mungkin menimbulkan ralat disebabkan oleh ketidakpadanan dalam bilangan pengikatan.

statement = "SELECT * FROM tab WHERE obj IN (?);"
c.execute(statement, "'"+"','".join(list_of_vars)+"'")
Salin selepas log masuk

Pendekatan Disyorkan: Pertanyaan Berparameter

Untuk melaksanakan pertanyaan IN dengan selamat, gunakan ruang letak parameter (?) dan ikat senarai pembolehubah sebagai parameter. Cipta pernyataan menggunakan kaedah format untuk menjana bilangan ruang letak yang sesuai:

statement = "SELECT * FROM tab WHERE obj IN ({0})".format(', '.join(['?'] * len(list_of_vars)))
c.execute(statement, list_of_vars)
Salin selepas log masuk

Dengan menghantar list_of_vars sebagai senarai nilai parameter, anda memastikan pengikatan yang betul dan menghalang kerentanan suntikan SQL.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Penyata WHERE IN dengan Selamat untuk Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan