как передать конфиденциальные данные из представления в контроллер

Чтобы создать объект с большим количеством информации, мне нужно выполнить последовательность отправки форм. Каждый раз, когда я возвращаю представление из контроллера, мне нужно передать некоторые идентификаторы еще не установленного объекта. Прямо сейчас я ввожу эти фрагменты информации в скрытые поля, а при отправке обратно на сервер продолжаю создавать объект. Этот сценарий повторяется несколько раз. Меня очень не устраивает этот способ передачи конфиденциальной информации, и мне было интересно, есть ли другие более подходящие способы сделать это. Я использую авторизацию и аутентификацию, но все еще беспокоюсь о некоторых сценариях, в которых один пользователь может взломать эти идентификаторы, прежде чем отправить их обратно на сервер, и тем самым изменить неправильный объект.

Кроме того, кажется тяжелой работой передавать одни и те же данные туда и обратно. Я исключил использование сеансов, потому что это раскрывает другой вид угрозы разрушения данных. (в случае использования более одного браузера одновременно).

Как мне выполнить указанную операцию?


person Tal l    schedule 08.05.2012    source источник
comment
См. ответ @Jason о подписании (также известном как создание хэша). Скрытые поля не защитят вас, равно как и поля ввода только для чтения. Шифрование/дешифрование также не совсем подходит - клиент (браузер) всегда будет отправлять исходные данные в виде открытого текста. Если вы думаете о библиотеках шифрования на стороне клиента - конечно, но опять же, это на стороне клиента (можно увидеть/проверить, несмотря ни на что). Создайте хеш-сервер и сравните хэш-сервер.   -  person EdSF    schedule 08.05.2012
comment
Спасибо! к сожалению, я не могу проголосовать за ваш комментарий...   -  person Tal l    schedule 09.05.2012


Ответы (3)


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

Вот пример создания криптографически безопасного хэша http://www.bytemycode.com/snippets/snippet/379/

person Jason C    schedule 08.05.2012

Вы можете защитить свои данные, используя множество подходов, некоторые из которых я обсуждал в этом посте.

http://miroprocessordev.blogspot.com/2012/03/save-aspnet-mvc-application-against.html

http://miroprocessordev.blogspot.com/2012/03/safe-aspnet-mvc-application-against.html

person Amir Ismail    schedule 08.05.2012
comment
Я не понимаю, как можно предотвратить злонамеренное изменение объектов БД пользователем путем изменения полей формы перед публикацией. - person Tal l; 08.05.2012
comment
сделайте эти поля только для чтения, и вы сможете шифровать/расшифровывать важные данные и сравнивать расшифрованные данные с соответствующими объектами БД, чтобы пользователь не мог их обновить. - person Amir Ismail; 08.05.2012

используйте подделку межсайтового запроса с токеном, чтобы определить, что каждый раз, когда вы отправляете информацию, она содержит один и тот же токен, сгенерированный на стороне сервера и возвращенный из вашего html

person Rizstien    schedule 08.05.2012
comment
Кажется, это ответ на другой вопрос. Он намеревался избежать «межсайтового запроса». Я прав? - person Tal l; 08.05.2012