z szyn aktywny rekord zapytań guide on sql injectionJak używać symboli wieloznacznych w aktywnego rekordu gdzie klauzula przy jednoczesnej ochronie przed SQL injection
Kod ten jest bardzo korzystny:
Client.where ("orders_count = ?”, params [:]) zamówienia
do tego kodu:
Client.where ("orders_count = # {params [: orders]}")
mój problem jest chcę użyć LIKE klauzuli asterisk. Mój stary zapytanie wygląda następująco -
User.where("first_name LIKE '%#{first_name}%'")
Który jest podatna na SQL injection, ale jeśli mogę to zrobić:
User.where("first_name LIKE '%?%'", first_name)
Następnie otrzymaną SQL wygląda następująco:
SELECT "users".* FROM "users" WHERE (first_name LIKE '%'michael'%')
który jest nieważne z powodu dodatkowych pojedynczych cudzysłowów.
Jaki jest najlepszy sposób użycia symboli wieloznacznych i klauzuli LIKE, ale także ochrony przed atakami sql injection?
Dzięki za to – mkellyclare
Czy to podatna na SQL injection czy też Szyny zdezynfekować go? –
@KieranAndrews wydaje się być podatny na ataki, ponieważ możesz przekazać więcej znaków specjalnych, takich jak% i _, i będą działać. –