Предотвращает ли attr_accessible к свойствам, связанным с пользователем, подделку пользовательских данных? - PullRequest
0 голосов
/ 25 октября 2009

Я искал систему аутентификации, которая имела следующий код:

  # prevents a user from submitting a crafted form that bypasses activation
  # anything else you want your user to change should be added here.
  attr_accessible :login, :email, :password, :password_confirmation, :first_name, :last_name

Я не понимаю, почему attr_accessible применяется к этим свойствам.

Является ли комментарий правильным, что это мешает пользователю подделать форму для манипулирования данными пользователя? Если так, то почему?

Ответы [ 2 ]

1 голос
/ 25 октября 2009

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

В этом случае пользователь может обойти активацию, добавив параметр в форму POST для логического поля activated, создавая таким образом пользователя без проверки того, что у него есть допустимый адрес электронной почты. (Предполагается, что он называется activated.) Это было бы большой проблемой, если бы ваша система имела потенциал для таких вещей, как спам в комментариях.

Документация API для attr_accessible

0 голосов
/ 25 октября 2009

На самом деле attr_accessible делает защищенными другие атрибуты. Это противоположность макроса attr_protected. Rails генерирует thing= методы автоматически, поэтому attr_protected сложнее в использовании, чем версия из белого списка, attr_accessible.

Идея заключается в защите конфиденциальных полей от пользователей, манипулирующих URL-адресами и формами.

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