Rumah > pangkalan data > tutorial mysql > Bagaimanakah Pertanyaan Berparameter Dapat Menghalang Suntikan SQL dalam Interaksi SQLite Python?

Bagaimanakah Pertanyaan Berparameter Dapat Menghalang Suntikan SQL dalam Interaksi SQLite Python?

Barbara Streisand
Lepaskan: 2025-01-05 00:17:40
asal
518 orang telah melayarinya

How Can Parameterized Queries Prevent SQL Injection in Python's SQLite Interactions?

Melindungi Terhadap Suntikan SQL dalam Python

Masalah:

Anda mempunyai skrip Python yang mengemas kini nilai char(80) dalam pangkalan data SQLite. Nilai rentetan diperoleh terus daripada pengguna dan dihantar ke skrip sebagai muatan JSON. Anda sedar bahawa pendekatan ini terdedah kepada serangan suntikan SQL.

Penyelesaian:

Untuk melindungi daripada suntikan SQL, anda boleh menggunakan pertanyaan berparameter dalam operasi kemas kini anda. Pertanyaan berparameter membolehkan anda menghantar nilai kepada pernyataan SQL tanpa memasukkannya terus dalam rentetan pertanyaan. Ini menghalang input berniat jahat daripada mengganggu sintaks SQL.

Pustaka Python sqlite3 menyokong pertanyaan berparameter melalui ? pemegang tempat. Anda boleh menghantar nilai kepada kaedah laksana sebagai satu tuple nilai yang sepadan dengan pemegang tempat dalam pertanyaan.

Kod Disemak:

Berikut ialah versi semakan anda kaedah setLabel yang menggunakan pertanyaan berparameter:

def setLabel( self, userId, refId, label ):
    self._db.cursor().execute(
        """
        UPDATE items SET label = ? WHERE userId = ? AND refId = ?""",
        (label, userId, refId)
    )
    self._db.commit()
Salin selepas log masuk

Dengan menggunakan pertanyaan berparameter, anda memastikan bahawa input pengguna dianggap sebagai nilai dan bukannya sebahagian daripada pernyataan SQL, dengan berkesan menghalang serangan suntikan SQL.

Atas ialah kandungan terperinci Bagaimanakah Pertanyaan Berparameter Dapat Menghalang Suntikan SQL dalam Interaksi SQLite Python?. 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