>>> @clientes_movimientos = ClienteMovimiento.find_by_sql("Select
>>> clientes_movimientos.* " +
>>>                    "from clientes_movimientos, solicitudes, clientes " +
>>>                    "where clientes_movimientos.solicitud_id = solicitudes.id
>>> and " +
>>>                    " solicitudes.cliente_id = clientes.id and " +
>>>                    " clientes.id = #{params[:id]}")
>>> AQUÍ NO ESTA EL PROBLEMA, el problema es que en el array que me genera,
>>
>> Hola, aca tenés un problemón, estás dejando un sql injection re lindo
>> al mundo :).
> heee, yo no se nada sobre sql injection.
>
> ¿cual es el problema? ¿como se puede comprobar el problema? y por
> último ¿como se evita?

El problema es que está pasando al query un string que viene desde el
user sin hacerle ningun tipo de limpieza, dejando a algun vivo a hacer
cosas como (not tested)

/controller_name/25?id=25; INSERT INTO clientes_movimientos (income)
VALUES (5000000000);

Con sqlmap [1] encontras estos errores bastante facil auditando las
URLs donde hagas cosas a mano.

Y llenarme de plata con un cronjob. Se evita en principio, por ejemplo
en este caso, haciendo un params[:id].to_i, usando los finders de
ActiveRecord o haciendo un "escape string" (creo que hay un metodo en
AR por si lo necesitas) antes de concatenar.

> je, te maté a preguntas. si es muy largo te podrías dar una charlita :)

eh, el experto en seguridad es freedomcoder :)


[1] http://sqlmap.sourceforge.net/

-- 
--
Ricardo Markiewicz
http://www.gazer.com.ar/
http://www.voyovoy.com/ - ¿Qué hay para hacer?
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a