Я работаю над типичным приложением CRUD в ASP.NET MVC, где будет несколько учетных записей пользователей, и у каждого будет несколько элементов.
Когда пользователь редактирует элемент, он будет делать это по URL-адресу, например / edit / 5 , где число представляет идентификатор строки в базе данных.
У меня есть некоторые опасения по поводу того, что один пользователь просто меняет идентификатор на идентификатор элемента другого пользователя и может его изменить. Чтобы защитить удостоверение личности, мне приходили в голову следующие решения:
- Зашифруйте его, чтобы его нельзя было легко изменить, но, конечно, мне нужен код для его расшифровки каждый раз, когда он отправляет обратно.
- Измените схему базы данных так, чтобы GUID также создавался рядом с идентификатором, и это используется в URL.
Оставьте читаемый идентификатор как есть и включите идентификатор пользователя вошедшего в систему в запросах для элемента, чтобы запросы выглядели так:
database.Items.SingleOrDefault (c => c.UserID == [текущий зарегистрированный идентификатор пользователя] && c.ID == itemID);
Может быть, есть лучший способ или способ, о котором я не думал. Какой метод защиты от этой проблемы вы предпочитаете?