Что нужно для обеспечения безопасности переменных сеанса ASP.NET - PullRequest
0 голосов
/ 05 января 2012

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

Предполагая, что пользователь имеетих ключ идентификатора сеанса, что я должен сделать, чтобы пользователь не мог получить доступ к переменным, которые я скрываю в коллекции сеанса?Также мне нужно позаботиться о ViewState (хотя я планирую отключить его в этом приложении. Было бы неплохо знать)

Ответы [ 3 ]

2 голосов
/ 05 января 2012

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

Если пользователь не имеет корневого доступа к вашему серверу (где хранятся данные сеанса), вам не стоит слишком беспокоиться.Но я предполагаю, что если бы у пользователя был root-доступ к вашему серверу, у вас было бы гораздо больше проблем, чем о данных сеанса.

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

1 голос
/ 05 января 2012

Пользователь получит только строку идентификатора сеанса, которая хранится в файле cookie. Таким образом, они никак не смогут получить доступ к отдельным значениям в объекте сеанса (если, конечно, эти значения никак не отображаются на странице).

В ViewState пакет свойств со всеми значениями сериализуется в скрытом поле формы на странице. Они могут быть легко десериализованы любым пользователем, который хочет посмотреть (это просто простая сериализация Base64). Однако ASP.NET предлагает возможность проверить, не были ли подделаны эти значения, а также зашифровать их с помощью закрытого ключа на сервере. Тем не менее, я бы советовал никогда не помещать что-либо «конфиденциальное» в представление состояния независимо от этого. Или, как вы упомянули, просто выключите его, если он не нужен.

0 голосов
/ 05 января 2012

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

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