这与我问的另一个问题有关。总而言之,我有一个 URL 的特殊情况,当一个表单被发布到它时,我不能依赖 cookie 进行身份验证或维护用户的会话,但我需要知道他们是谁,我需要知道他们已经登录了!
我想我想出了一个解决我的问题的方法,但它需要充实。这就是我的想法。我创建了一个名为“用户名”的隐藏表单字段,并在其中放置用户的用户名,加密。然后,当表单发布时,即使我没有从浏览器收到任何 cookie,我也知道他们已经登录,因为我可以解密隐藏的表单字段并获取用户名。
我能看到的主要安全漏洞是重放攻击。如何防止某人获取该加密字符串并以该用户身份发布?我知道我可以使用 SSL 使窃取该字符串变得更加困难,也许我可以定期轮换加密密钥以限制该字符串适用的时间量,但我真的很想找到一个防弹的解决方案。有人有什么想法吗?ASP.Net ViewState 是否阻止重播?如果是这样,他们是如何做到的?
编辑:我希望有一个不需要任何存储在数据库中的解决方案。应用程序状态是可以的,只是它无法在 IIS 重新启动或在网络场或花园场景中完全工作。我现在接受克里斯的回答,因为我不相信在没有数据库的情况下甚至可以保护它。但是如果有人提出不涉及数据库的答案,我会接受!