Как я могу защитить свое свойство сущности ID во время редактирования / обновления моей модели? - PullRequest
0 голосов
/ 02 ноября 2011

Я везде читаю, что я должен использовать [Bind (Exclude = "ID")] при создании форм, которые позволят модифицировать мою модель.

Я понимаю, почему и как это должно помочь ... но я не понимаю, почему это даже работает.

При создании представления редактирования с использованием встроенных шаблонов MVC ... он по-прежнему использует Html-Hidden для хранения переменной ID. Во время публикации мне нужно использовать переменную ID, чтобы узнать, какую запись базы данных необходимо обновить.

Но я не могу доверять переменной ID, так как она может быть взломана во время публикации.

Итак, я использую Bind-exclude для идентификатора. Кроме того, я не могу доверять скрытой переменной ... так как мой POST должен передавать идентификатор, запись которого редактируется в форме?

Единственное решение, о котором я могу подумать ... - это использовать переменную Session, которая отслеживает (на стороне сервера), что редактируется запись.

Почему люди не боятся этого? Есть ли что-то еще, что MVC делает во время привязки, чтобы убедиться, что идентификатор не был изменен?

Может кто-нибудь объяснить, что я не понимаю в безопасности MVC?

1 Ответ

2 голосов
/ 02 ноября 2011

Вы выставляете запись для редактирования.Тогда это не может быть проблемой безопасности, когда кто-то редактирует запись.Независимо от того, является ли эта запись из предыдущего GET или нет, не имеет значения.

Если у вас есть какие-либо бизнес-правила о том, кто может редактировать какие записи, вам следует (всегда) повторно проверять эти правила в сообщении.

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