Безопасно ли использовать коллекцию атрибутов для хранения дополнительных данных? - PullRequest
1 голос
/ 16 июля 2009

Безопасно ли использовать коллекцию атрибутов веб-элемента управления для хранения дополнительных данных?

, например

DropDownList ddl = new DropDownList();
ddl.Attributes.Add("ExtraData", "SomeData");

Ответы [ 3 ]

2 голосов
/ 16 июля 2009

Я бы рекомендовал против этого, поскольку эти атрибуты могут быть подвержены фальсификации. Вместо этого у вас должен быть список объектов на сервере, в котором каждый объект хранит как раскрывающиеся текстовые данные, так и дополнительные данные в нем.

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

1 голос
/ 16 июля 2009

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

С чем-то вроде:

HASH_FUNCTION(DATA + SECRET), DATA

вы можете проверить на сервере, не кто-нибудь подделал ваши данные.

0 голосов
/ 12 января 2013

Да! Но только если ваши данные не являются конфиденциальными, и не имеет значения, если клиент вмешивается в это. HTML 5 официально признает использование атрибутов data- * для данных общего назначения. Имейте в виду, что атрибуты data- * в основном используются для клиентской части; они также могут быть использованы на стороне сервера. Но помните, храните только нечувствительные данные.

Я лично использовал атрибуты data- * в asp.net, чтобы упростить процесс отображения предупреждений для кнопок / кнопок (например, для удаления) на стороне клиента. Затем сообщение может быть изменено на стороне сервера по мере необходимости путем доступа к соответствующему атрибуту data- * в коллекции Attributes. Если клиент подделывает эти атрибуты, это только вредит клиенту, так как они могут не получить предупреждающее сообщение.

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