[pyar] Escapar parametros en consultas, MySQLdb

Gerardo Benitez gerardo en coresecurity.com
Mie Feb 9 13:06:35 ART 2011


hola,

> 2011/2/8 Luis I. Facciolo <lifacciolo en gmail.com>:
>> Podrias hacer algo asi:
>> # si fuesen: primaryUsers = ["user1","user2","user3","user4","user5"]
>> delete2 = "DELETE FROM Users where user NOT IN ( %s )" % (",".join(["'%s'" %
>> user for user in primaryUsers]),)
>>>>> output:
>> "DELETE FROM Users where user NOT IN (
>> 'user1','user2','user3','user4','user5' )"
>> Saludos!
>>
> SI no me equivoco hacer el join de la lista de valores de esa forma
> deja abierta la posibilidad a un injection. Si alguno de los valores
> tiene una ' entre medio no es escapada.
Si, lo que quiero evitar es la injeccion de sql.

> Si usas MySQL o SQLite3 (los unicos que probe con python) podes dejar
> que el mismo modulo se encargue de escapar los valores
>
> Quizas lo que haria seria algo del estilo
>
> primaryUsers = ["user1","user2","user3","user4","user5"]
> in_cond = [ '%s' for a in range(len(primaryUsers)) ]
>
> sql = 'DELETE FROM users WHERE user NOT IN (%s)' % (','.join(in_cond),)
> cur.execute(sql, primaryUsers)

Si lo hago de este modo el modulo se encarga de escapar los valores?


Gracias de nuevo.


-- 
Gerardo Benitez
Web Developer
CORE Security Technologies
Humbolt 1967 - 1er piso
Buenos Aires - Argentina
Tel: +54(11) 5556-CORE (2673)
Web: http://www.coresecurity.com

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20110209/9fc10c8e/attachment.html>


More information about the pyar mailing list