Bagaimana untuk Memasukkan Senarai dengan Selamat ke dalam Klausa MySQL IN?

Susan Sarandon
Lepaskan: 2024-11-24 03:10:13
asal
1027 orang telah melayarinya

How to Safely Insert Lists into MySQL IN Clauses?

Sisipkan Senarai Dengan Selamat ke dalam Klausa MySQL IN

Artikel ini meneroka kaedah yang cekap dan selamat untuk memasukkan senarai ke dalam klausa IN dalam pangkalan data MySQL. Walaupun pendekatan tradisional melibatkan pemetaan senarai kepada rentetan dan memasukkannya secara langsung, kaedah ini menimbulkan risiko suntikan SQL kerana keperluan untuk petikan manual dan melarikan diri.

Untuk mengelakkan kerentanan ini, pendekatan yang lebih selamat adalah menggunakan senaraikan terus sebagai parameter dalam pertanyaan MySQL. Kod berikut menunjukkan kaedah ini:

format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings,
                tuple(list_of_ids))
Salin selepas log masuk

Kod ini mencapai perkara berikut:

  • Mengelakkan Petikan Manual: Dengan menggunakan penentu format '%s' , data dalam list_of_ids dihantar secara automatik kepada pemacu MySQL sebagai parameter, menghapuskan keperluan untuk manual memetik.
  • Menghalang SQL Injection: Data dimasukkan sebagai parameter, memastikan ia tidak ditafsirkan sebagai sebahagian daripada pertanyaan. Ini menjadikan pertanyaan kebal terhadap serangan suntikan SQL.
  • Menyokong Sebarang Aksara: Data boleh mengandungi sebarang aksara tanpa memerlukan penyingkiran atau petikan.

Adalah penting untuk ambil perhatian bahawa kaedah ini bergantung pada keupayaan pemacu MySQL untuk mengendalikan parameter dengan selamat. Selagi data dihantar dengan betul sebagai parameter, pertanyaan kekal selamat daripada suntikan SQL.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Senarai dengan Selamat ke dalam Klausa MySQL IN?. 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