Я переношу приложение ASP.NET в MVC и должен хранить два элемента, относящихся к аутентифицированному пользователю: список ролей и список видимых идентификаторов элементов, чтобы определить, что пользователь может или не может видеть.
Мы использовали WSE с веб-службой в прошлом, и это сделало вещи невероятно сложными и невозможными для правильной отладки. Теперь мы бросаем веб-сервис, который я искал, чтобы резко упростить решение, просто чтобы сохранить эти вещи в сеансе. Коллега предложил использовать роли и поставщиков членства, но, глядя на это, я обнаружил ряд проблем:
a) Он страдает от аналогичных, но разных проблем для WSE в том, что он должен использоваться очень ограниченным способом, но это сложно сделать даже для написания тестов;
b) Единственная опция кэширования для RolesProvider основана на файлах cookie, которые мы отклонили по соображениям безопасности;
c) Он не вводит никаких осложнений и дополнительного нежелательного багажа;
Все, что мы хотим сделать, в двух словах, это хранить две строковые переменные в сеансе пользователя или что-то эквивалентное безопасным образом и ссылаться на них, когда нам нужно. То, что, похоже, составляет десять минут, до сих пор занималось несколькими днями расследования и усугубляло проблему, которую мы теперь обнаружили, что идентификаторы сеансов могут, по-видимому, подделываться, см.
http://blogs.sans.org/appsecstreetfighter/2009/06/14/session-attacks-and-aspnet-part-1/
Мне осталось думать, что нет простого способа сделать эту очень простую работу, но я считаю, что невозможно поверить.
Может ли кто-нибудь:
a) предоставить простую информацию о том, как сделать сеансы ASP.NET MVC безопасными, поскольку я всегда считал, что они были?
b) предложить другой простой способ сохранить эти две строковые переменные для зарегистрированных в ролях пользователя и т.д., не заменяя один сложный кошмар другим, как описано выше?
Спасибо.