Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggunakan Kad Liar SQL dengan Selamat dengan `MySQLdb` Python untuk Mengelakkan Suntikan?

Bagaimana untuk Menggunakan Kad Liar SQL dengan Selamat dengan `MySQLdb` Python untuk Mengelakkan Suntikan?

Mary-Kate Olsen
Lepaskan: 2024-12-21 03:31:08
asal
797 orang telah melayarinya

How to Safely Use SQL Wildcards with Python's `MySQLdb` to Avoid Injection?

Menggunakan Kad Liar SQL dan Operator LIKE dalam Format Rentetan Python

Memasukkan kad bebas SQL dan operator LIKE ke dalam format rentetan Python boleh menjadi mencabar. Artikel ini menawarkan penyelesaian kepada ralat biasa yang dihadapi semasa cuba melaksanakan pertanyaan MySQL menggunakan MySQLdb.

Ralat daripada MySQLdb

Percubaan 3 dan 4 mengembalikan ralat daripada MySQLdb, yang menunjukkan " tidak cukup argumen untuk format rentetan." Ini berlaku kerana tanda % ditafsirkan sebagai penentu format oleh operator pemformatan rentetan dalam Python.

Kerentanan kepada SQL Injection

Empat percubaan pertama yang ditunjukkan terdedah kepada Serangan suntikan SQL. Input pengguna, seperti pembolehubah pertanyaan, harus dibersihkan atau dilupuskan untuk mengelakkan SQL berniat jahat daripada dilaksanakan.

Pendekatan Betul

Pendekatan yang disyorkan ialah menggunakan ruang letak bukannya pemformatan rentetan. Berikut ialah contoh:

curs.execute("""SELECT tag.userId, count(user.id) as totalRows 
                  FROM user 
            INNER JOIN tag ON user.id = tag.userId 
                 WHERE user.username LIKE %s""", ('%' + query + '%',))
Salin selepas log masuk

Dua argumen diluluskan untuk melaksanakan():

  • Pernyataan SQL dengan pemegang tempat untuk memasukkan kad bebas.
  • Setumpuk tuple mengandungi nilai pertanyaan bersih dengan aksara kad bebas.

Pendekatan ini memastikan bahawa Kenyataan SQL adalah sah dan dilindungi daripada suntikan SQL.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Kad Liar SQL dengan Selamat dengan `MySQLdb` Python untuk Mengelakkan Suntikan?. 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