2016-01-29 6 views
0

У меня всегда есть проблема и я не могу понять, как ее решить.asp.net mvc скрытое поле id issue

Например, в сценарии ASP.NET MVC, пользователь "A" имеет свои продукты:

A1(id=1),A2(id=2). 

Если мы редактируем для A1, в Edit.cshtml, A1 в Id = 1 только сохраняются в скрытое поле. Мы можем модифицировать идентификатор A1 до 2 с помощью инструмента разработчика браузера, поэтому измененные значения будут сделаны для A2, когда будут отправляться обратно на сервер, хотя мы выполняем проверку на стороне сервера. Но пользователь A имеет достаточно прав на модификацию всех своих продуктов A1 A2. Итак, в этом случае, как запретить пользователям взломать? Я думаю, что также показывать идентификатор продукта в URL-адресе; то пользователь не может изменять его при обновлении.

Я новичок в MVC - может быть, у вас есть идея или что такое общий метод для решения этой проблемы?

+0

Если вы действительно беспокоитесь об использовании взлома собственных продуктов (не знаете почему), то [эта статья] (http://blog.slatner.com/2010/01/20/SecuringFormValuesInASPNETMVC.aspx) обсуждает один технический вопрос –

+0

Просто убедитесь, что у вас есть хорошее разрешение на месте. Возможно, перед редактированием проверьте, разрешено ли им редактировать, прежде чем двигаться вперед. Также я предпочитаю использовать GUID (не так просто для прогнозирования пользователем) для таких вещей вместо целых чисел. – dansasu11

ответ

0

Это большинство из них не является проблемой, до сих пор является правомерный вопрос, как я это исправить, а просто вместо обычного Id я зашифровать идентификатор, модель будет выглядеть следующим образом:

public class ProductSafe 
{ 
    public string Id {get; set;}\\encrypted 
    public string Something {get; set;} 
} 

Используя то, что когда-либо вы хотели бы зашифровать, когда вы получаете идентификатор объекта, зашифрован, когда вы сохраняете модель, дряхните ее, чтобы получить реальный идентификатор.