2016-01-19 4 views
2

Я не могу найти окончательных ответов на это. У меня есть модель пользователя с дизайном, и я добавил атрибут «admin», который является логическим, по умолчанию значением false. В настоящее время я должен перейти на консоль и вручную изменить атрибут на true, чтобы дать пользователю этот статус администратора.Рубин на рельсах. Насколько безопасен атрибут администратора для пользовательской модели?

Вопрос, насколько это безопасно? Есть ли способ изменить статус своего пользователя, не обращаясь к серверу (на данный момент мой компьютер)? Может ли безопасность быть скомпрометирована после того, как я поместил сайт в производство? Атрибут admin не является допустимым параметром при входе, регистрации или обновлении.

Я спрашиваю, как я хочу добавить личную панель для себя, чтобы просматривать, редактировать или удалять все, что мне может понадобиться, когда сайт переходит в производство.

ответ

1

Учитывая, что разработка, безопасность - это последнее, что может пойти не так, если только один из Rails или Devise не сломался, что маловероятно. Вы предприняли достаточные шаги, например, не учитывая параметр admin, которого должно быть достаточно для почти любой ситуации. Несколько приложений Rails, включая GitHub и Shopify, делают это (возможно, без Devise, но это не проблема) без проблем безопасности. Я сам использую Devise и admin flags и могу поручиться, что это достаточно безопасно.

+0

Хорошо, спасибо, что очистили это. –

0

По какой-либо причине вы не используете что-то наподобие RoleModel? Это позволит вам в будущем перейти к другим ролям гораздо более удобным способом, чем добавление атрибута для пользователя для каждой роли.

В любом случае ... если вы не предоставите им возможность обновить это поле, оно должно быть безопасным. Если вы хотите, чтобы гарантировать, что нет никакого способа, не администратор может обновить это поле, вы всегда можете добавить что-то вроде этого, чтобы UsersController # обновления:

params[:user].delete(:admin) unless current_user.admin? 
+2

У меня есть 2 роли пользователя, использующих логическое для сайта, и админ логический для 1 страницы для себя. Я не вижу никакой предсказуемой причины, почему мне нужно будет добавить больше ролей. Спасибо, что поняли мои проблемы, и я буду помнить ваше предложение. –

2

Если вы используете strong params то риск только если позволяет установить этот атрибут из любого действия вне панели администратора.

Для дополнительной безопасности вы можете использовать attr_readonly, поэтому вы можете установить этот атрибут только при создании объекта.

+0

Благодарим вас за разъяснение моих проблем и за ваше предложение. Я посмотрю на это. –

Смежные вопросы