2016-03-11 6 views
-1

Я кодирую интернет-приложение MVC5, где некоторые из моих представлений имеют скрытые значения для ViewModel.Может ли скрытая переменная HTML видна или изменена конечным пользователем?

Вот пример:

@Html.HiddenFor(model => model.id) 

Это безопасный способ хранения переменных, которые потенциально могут быть чувствительны? Чувствительным я имею в виду переменные, которые не должны быть замечены или изменены каким-либо пользователем или любым javaScript-кодом.

+0

HiddenFor просто генерирует вход с типом = скрытый, поэтому «нет». –

+2

использование может использовать сеанс, сумку просмотра viewtate и т. Д., Чтобы скрыть данные от пользователя –

+0

Клиент, такой как Chrome и Firefox, который позволяет редактировать данные в реальном времени, - это то, что вы не можете контролировать. Возможно, вы сможете использовать хранилище сеансов для идентификатора, так как оно мало и может быть легко очищено. –

ответ

2

Да, конечный пользователь может видеть и потенциально изменять значение. Все, что делает HiddenFor делают скрытый вход тег как так:

<input type="hidden" id="id" name="id" value="abc123"/> 

Таким образом, это не безопасный способ хранения конфиденциальных данных.

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

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

+0

Cookies могут работать тоже. Если вы кодируете все, что вы пишете в файле cookie –

+0

@RenukaDeshmukh, это правда. На определенном уровне единственным способом быть уверенным будет кодирование или шифрование данных. Как я уже сказал, это зависит от того, насколько безопасны данные. – Steve

0

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

Скрытое поле, как показано ниже, не будет очевидно для пользователя и изменение значения в скрытом поле приведет к аннулированию запроса.

<input type="hidden" id="id" name="id" value="GH1k2ji5as2352"/> 

 Смежные вопросы

  • Нет связанных вопросов^_^