Mam pewien kod w języku Python, który ustawia wartość char (80) w sqlite DB.Ochrona przed iniekcją SQL w pythonie
Ciąg znaków jest uzyskiwany bezpośrednio od użytkownika za pośrednictwem pola wprowadzania tekstu i wysyłany z powrotem do serwera za pomocą metody POST w strukturze JSON.
Po stronie serwera aktualnie przekazuję ciąg do metody wywołującej operację SQL UPDATE.
Działa, ale mam świadomość, że w ogóle nie jest bezpieczny.
Spodziewam się, że strona klienta i tak nie jest bezpieczna, więc wszelkie zabezpieczenia należy umieścić po stronie serwera. Co mogę zrobić, aby zabezpieczyć operację UPDATE przed iniekcją SQL?
Funkcja, która "zacytowałaby" tekst, aby nie mógł pomylić parsera SQL, jest tym, czego szukam. Oczekuję takiej funkcji, ale nie mogę jej znaleźć.
Edit: Tutaj jest ustawienie mój bieżący kod char nazwa pola etykiety:
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()
nie obsługuje pyton sparametryzowanych kwerend? –
@Jeremy. Tak ... ale tak naprawdę to czy biblioteka Pythona dla konkretnej bazy danych obsługuje ją (którą AFAIK wszyscy robią). – Gerrat
Tak. Rozważ więc moje pytanie jako pytanie, co robię, aby zapewnić ochronę przed wtryskiem sql. – chmike