Tôi có một số mã bằng Python đặt giá trị char (80) trong một sqlite DB.Bảo vệ chống lại SQL injection trong python
Chuỗi được lấy trực tiếp từ người dùng thông qua trường nhập văn bản và được gửi trở lại máy chủ bằng phương thức POST trong cấu trúc JSON.
Ở phía máy chủ, tôi hiện đang chuyển chuỗi tới phương thức gọi hoạt động SQL UPDATE.
Nó hoạt động, nhưng tôi biết nó không an toàn chút nào.
Tôi hy vọng rằng phía máy khách không an toàn, vì vậy mọi bảo vệ sẽ được đặt ở phía máy chủ. Tôi có thể làm gì để bảo đảm hoạt động UPDATE một lần nữa SQL injection?
Một chức năng sẽ "trích dẫn" văn bản để không nhầm lẫn giữa trình phân tích cú pháp SQL là những gì tôi đang tìm kiếm. Tôi mong đợi chức năng như vậy tồn tại nhưng không thể tìm thấy nó.
Edit: Dưới đây là mã hiện tại của tôi thiết lập các char tên trường label:
def setLabel(self, userId, refId, label):
self._db.cursor().execute("""
UPDATE items SET label = ? WHERE userId IS ? AND refId IS ?""", (label, userId, refId))
self._db.commit()
Không hỗ trợ python truy vấn tham số? –
@Jeremy. Có ... nhưng nó thực sự cho dù thư viện python cho bất kỳ cơ sở dữ liệu cụ thể hỗ trợ nó (mà tất cả họ AFAIK làm). – Gerrat
Có. Vì vậy, xem xét câu hỏi của tôi như yêu cầu nó những gì tôi làm là đủ để đảm bảo bảo vệ chống lại tiêm sql. – chmike