Tengo un código en Python que establece un valor char (80) en una base de datos sqlite.Protección contra inyección SQL en python
La cadena se obtiene directamente del usuario a través de un campo de entrada de texto y se envía de vuelta al servidor con un método POST en una estructura JSON.
En el lado del servidor actualmente transfiero la cadena a un método que llama a la operación SQL ACTUALIZAR.
Funciona, pero soy consciente de que no es seguro en absoluto.
Espero que el lado del cliente no sea seguro de todos modos, por lo que cualquier protección se pondrá en el lado del servidor. ¿Qué puedo hacer para asegurar la operación UPDATE contra la inyección de SQL?
Una función que "citaría" el texto para que no pueda confundir el analizador SQL es lo que estoy buscando. Espero que tal función exista pero no pude encontrarla.
Editar: Aquí está fijando mi código actual de la etiqueta del nombre de campo Char:
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()
no soporta pitón consultas con parámetros? –
@Jeremy. Sí ... pero realmente se trata de si la biblioteca de Python para cualquier base de datos en particular lo admite (lo que AFAIK hacen todos). – Gerrat
Sí. Así que considere mi pregunta, ya que preguntar lo que hago es suficiente para garantizar la protección contra la inyección de sql. – chmike