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