OT Inyección en sentencias SQL

Dr. Bobus drbobus en gulic.org
Sab Jun 6 11:42:42 CEST 2009


Hola todos:

He leido cienes de veces sobre lo inseguro de emplear sustituciones de cadenas en las sentencias SQL

Esto es inseguro:

cosa = 'pp'
c.execute("select * from pipo where algo= '%s'" % cosa)



Esto no es inseguro

h = ('pp',)
c.execute('select * from pipo where algo=?', h)


Me he limitado a seguir obedientemente las recomendaciones de mis mayores pero nunca he entendido porqué una cosa es insegura y la otra no y mucho menos cómo alguien puede inyectar nada dentro de un código. He leído varios ejemplos sobre inyectar código pero no me queda muy claro si para ello es necesario tener acceso directo al código o estamos hablando de introducir código a través de un form en html.

Alguien nos puede ilustar sobre este tema?

Gracias y saludos

Dr. Bobus

-- 
"Waving away a cloud of smoke, I look up, and am blinded by a bright, white
light. It's God. No, not Richard Stallman, or Linus Torvalds, but God. In
a booming voice, He says: "THIS IS A SIGN. USE LINUX, THE FREE UNIX SYSTEM
FOR THE 386."
(Matt Welsh)
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20090606/b5e99222/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es