Czy istnieje sposób na dezynfekcję sql w metodzie szyn find_by_sql
?Szyny, jak dezynfekować SQL w find_by_sql
Próbowałem tego rozwiązania: Ruby on Rails: How to sanitize a string for SQL when not using find?
Ale to nie na
Model.execute_sql("Update users set active = 0 where id = 2")
zgłasza błąd, ale kod SQL jest wykonywane, a użytkownik o identyfikatorze 2 ma teraz konto niepełnosprawnego.
Proste find_by_sql
też nie działa:
Model.find_by_sql("UPDATE user set active = 0 where id = 1")
# => code executed, user with id 1 have now ban
Edit:
Więc mój klient poprosił o możliwość takiej funkcji (wybór przez SQL) w panelu administratora, aby trochę skomplikowany kwerendy (przyłącza, specjalne warunki itp.). Naprawdę chcę to znaleźć.
Druga Edycja:
chcę osiągnąć, że „zło” kod SQL nie zostanie wykonana.
W panelu administracyjnym można wpisać zapytanie ->Update users set admin = true where id = 232
i chcę zablokować dowolne polecenie aktualizacji UPDATE/DROP/ALTER. Chcę tylko wiedzieć, że tutaj możesz wykonać WYŁĄCZ TYLKO.
Po kilku próbach stwierdzam, że nie robię tego. sanitize_sql_array
Czy istnieje sposób, aby to zrobić w Rails?
Przepraszamy za zamieszanie ..
Wynik: 'metoda chronione 'sanitize_sql_array' wezwał do ActiveRecord :: Base: Class' –
Zaktualizowałem swój post. Mam nadzieję, że to ci pomoże – bor1s
..lub możesz użyć tego: 'ActiveRecord :: Base.send (: sanitize_sql_array," twój ciąg ")' – bor1s