Где я могу запретить пользователям доступ к данным других пользователей? - PullRequest
1 голос
/ 28 мая 2010

На создаваемом мной веб-сайте мне нужно разрешить пользователям редактировать свои заказы. Достаточно просто. Но как я могу гарантировать, что пользователь не может редактировать заказы других пользователей? Проводить ли проверки в модели или в контроллере, чтобы убедиться, что заказ принадлежит аутентифицированному пользователю?

Ответы [ 2 ]

1 голос
/ 28 мая 2010

Поставьте в представлении проверки (да, представление) для быстрого реагирования на ошибки пользователя.

Установите проверки в контроллере для обеспечения целостности данных.

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

0 голосов
/ 28 мая 2010

Что ж, надеюсь, у вашего сайта нет возможности для пользователя даже пытаться редактировать чужие заказы. Но если это все еще возможно, вы можете поместить эту логику либо в модель, либо в контроллер. Это вопрос мнения. Некоторые люди скажут, что контроллер должен делать такие вещи, как проверки доступа, а модель знает, как изменить себя. Другие скажут «толстая модель, тощий контроллер» и скажут, что проверки безопасности должны многократно использоваться на контроллерах, и поэтому они должны идти в модели. Это твой звонок.

...