Это связано с другим вопросом, который я задал . Таким образом, у меня есть особый случай URL, когда при отправке формы на него я не могу полагаться на куки для аутентификации или для поддержки сеанса пользователя, но мне как-то нужно знать, кто они, и мне нужно чтобы знать, что они вошли в систему!
Я думаю, что нашел решение своей проблемы, но оно нуждается в уточнении. Вот что я думаю. Я создаю скрытое поле формы под названием «имя пользователя» и помещаю в него имя пользователя в зашифрованном виде. Затем, когда формы POSTs, даже если я не получаю куки от браузера, я знаю, что они вошли в систему, потому что я могу расшифровать скрытое поле формы и получить имя пользователя.
Главный недостаток безопасности, который я вижу, это повторные атаки. Как я могу помешать кому-то завладеть этой зашифрованной строкой и выполнить POSTing от имени этого пользователя? Я знаю, что могу использовать SSL, чтобы усложнить кражу этой строки, и, возможно, я могу регулярно поворачивать ключ шифрования, чтобы ограничить время, в течение которого строка подходит, но мне бы очень хотелось найти пуленепробиваемую решение. У кого-нибудь есть идеи? Предотвращает ли ASP.Net ViewState воспроизведение? Если да, то как они это делают?
Редактировать : Я надеюсь на решение, которое не требует ничего, хранящегося в базе данных. Состояние приложения будет нормальным, за исключением того, что оно не выдержит перезапуска IIS или вообще не будет работать в сценарии веб-фермы или сада. Сейчас я принимаю ответ Криса, потому что я не уверен, что это возможно сделать без базы данных. Но если кто-то придет с ответом, который не касается базы данных, я приму его!