2013-11-12 4 views
0

Возможно ли в рельсах, что если обнаружена уязвимость в sql-инъекции, кто-нибудь может сбросить стол. Я наткнулся на статью, в которой говорится рельсы выполнять только отдельные операторы SQL, например, если я бегу сырой SQL, как этотsql injection in rails

ActiveRecord::Base.connection.execute("select * from users; drop table test_table;")

бросками исключение

является это относится ко всем рельсам ActiveRecord хелперы там любые другие методы, с помощью которых можно удалить таблицу?

ответ

0

что это за уязвимость?

Ошибка позволяет SQL-инъекцию посредством динамических методов поиска (например, find_by_foo (params [: foo])). Я немного объясню динамические искатели. Ошибка влияет на все версии Ruby on Rails.

Известный сценарий использования заключается в следующем: Используется Authlogic (сторонняя, но популярная библиотека проверки подлинности). Вы должны знать секретный токен сеанса.

Есть и другие сценарии, которые можно использовать, но это действительно зависит от того, что делает ваше приложение. Поскольку невозможно доказать, что что-то небезопасно, вы должны серьезно относиться к этой уязвимости и обновляться, даже если считаете, что вас это не затрагивает.

В чем заключается эта уязвимость?

Для тех, кто знает Rails:

Исправлена ​​ошибка не влияет на нормальные методы поиска (например, найти (PARAMS [: идентификатор])). Ошибка не может быть использована с помощью параметров запроса. Ошибка не в Authlogic. Это в Rails. Так получилось, что Authlogic запускает его. Devise (другая сторонняя библиотека проверки подлинности) не вызывает ошибку. Дело «params», это совершенно другая и несвязанная проблема. Описанная здесь проблема довольно серьезная и заслуживает серьезного внимания, поэтому, пожалуйста, следите за любыми новыми рекомендациями.

подробнее см rails sql injection

+0

я прошел через все возможные документации о инъекции SQL, но нет никакого способа, вы можете удалить таблицу в SQL инъекции. – suman