#database #ruby-on-rails-3 #authentication #entitlements
#База данных #ruby-on-rails-3 #аутентификация #права
Вопрос:
Извините, если это элементарный вопрос, но я только начал задумываться, правильно ли я все это время делал. Обычно, когда пользователь пытается обновить базу данных, я просто использую его / ее имя пользователя в качестве ключа в таблице пользователей, а затем основываю на этом все операции. Однако я только что понял, что хитрый пользователь МОЖЕТ отправить запрос, используя другое имя пользователя, таким образом, обходя эту слабую форму принудительного предоставления прав. Итак, мой вопрос на самом деле заключается в том, как мне предотвратить потенциальную отправку пользователем деструктивного действия против базы данных под другим идентификатором пользователя?
Ответ №1:
Вы должны сохранить идентификатор текущего пользователя в сеансе, которым нелегко манипулировать.
Я обычно ссылаюсь на объекты через отношение к объекту пользователя:
current_user.fragile_records.find(params[:id]).destroy
Это удобный и простой способ проверки владения.
http://guides.rubyonrails.org/security.html это удивительно хорошее чтение по этому вопросу.
Существует множество готовых решений для поддержания идентификации пользователя (аутентификации) и обеспечения того, чтобы пользователь имел разрешение на действие (авторизацию) в Rails.