ruby-on-rails - pagina - sql injection ejemplos reales
Cómo usar comodines en un registro activo where cláusula mientras se protege contra la inyección sql (1)
Debe modificar su consulta de esta manera
User.where("first_name LIKE (?)", "%#{first_name}%")
Desde la guía de consulta de registros activos de rieles en la inyección de sql
Este código es altamente preferible:
Client.where ("orders_count =?", Params [: orders])
a este código:
Client.where ("orders_count = # {params [: orders]}")
Mi problema es que quiero usar una cláusula LIKE con un comodín. Mi consulta anterior se ve así:
User.where("first_name LIKE ''%#{first_name}%''")
Que es vulnerable a la inyección sql, pero si hago esto:
User.where("first_name LIKE ''%?%''", first_name)
Entonces el sql resultante se ve así:
SELECT "users".* FROM "users" WHERE (first_name LIKE ''%''michael''%'')
que no es válido debido a las comillas simples adicionales.
¿Cuál es la mejor manera de usar comodines y una cláusula LIKE pero también proteger contra los ataques de inyección sql?