Какие поля должны быть защищены от массового присвоения? - PullRequest
0 голосов
/ 11 января 2011

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

У меня есть проблемаопределение того, какие поля должны быть защищены.Есть ли какие-то правила, которым люди обычно следуют за этим?Я думаю, атрибуты, такие как внешние ключи и логические значения, такие как админ?будет иметь смысл защищать.Мне также интересно узнать о полях типа STI и полиморфных полях * _type / * _ id.Я вижу, что в Rails 3 введены атрибуты , защищенные по умолчанию , но, похоже, в Rails 2.3.8 такого нет.

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

Ответы [ 2 ]

5 голосов
/ 11 января 2011

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

Так что в моих моделях я использую attr_accessible для всех атрибутов, которые присутствуют как поля в формах. Все остальные защищены. (Я бы предпочел, чтобы все было защищено по умолчанию.)

Другими словами: предположим, что все отправленные клиентами данные будут злонамеренно подделаны.

Редактировать: соответствующий пост в блоге http://www.kalzumeus.com/2010/09/22/security-lessons-learned-from-the-diaspora-launch/

0 голосов
/ 13 сентября 2011

Полагаю, каждый «потенциально опасный» атрибут должен быть защищен, как флаг администратора для пользователя.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...