HTTP Cookies的替代方案?

HTTP Cookies的替代方案?,cookies,Cookies,他们说饼干很好吃。我个人认为应该有一种“更智能”的方法来检测web应用程序上用户的状态 比如说,在xyz.com拥有许多池和服务器的分布式环境中(据我所知),它目前就是这样工作的: 用户登录xyz.com xyz.com的登录模块在客户端的本地计算机上放置cookie 现在,当客户机转到xyz.com的Feature1时,Feature1池会检查本地cookie,如果他找到了,并且cookie没有过期,那么Feature1会假定客户机是好的,并允许他进入 因此,由于登录模块丢弃了cookie,f

他们说饼干很好吃。我个人认为应该有一种“更智能”的方法来检测web应用程序上用户的状态

比如说,在xyz.com拥有许多池和服务器的分布式环境中(据我所知),它目前就是这样工作的:

  • 用户登录xyz.com
  • xyz.com的登录模块在客户端的本地计算机上放置cookie
  • 现在,当客户机转到xyz.com的Feature1时,Feature1池会检查本地cookie,如果他找到了,并且cookie没有过期,那么Feature1会假定客户机是好的,并允许他进入
  • 因此,由于登录模块丢弃了cookie,feature1盲目信任客户机

    但我觉得在第三阶段有一个根本性的缺陷。如果黑客克隆了一个cookie并试图做些什么呢?(这是黑客尝试做的第一件显而易见的事情,即嗅探饼干)

    那么,除此之外还有其他选择吗?-web存储、闪存存储对象在未来将如何发展?还是饼干会占上风

    不要寻找一个明显的答案,因为根本没有。我对处理这个问题的不同观点感兴趣


    感谢

    的基本原则之一,我的意思是不要在服务器上存储状态,如果服务器上没有状态,那么就不需要使用cookie作为键来查找该状态。

    有很多(2021年更新): 我相信和/或中的信息将帮助您找到在客户端保存信息的替代方案

    基本上。。。目前有4种不同的方式在客户端存储数据而不使用cookie:

  • (和键/值对)
  • (另一个具有不同结构和验收的数据库)
  • (我最喜欢的,还有)
  • (即使在脱机状态下,持久后台处理也可以异步保存文件和许多其他内容)

  • 我相信,对于您的特定需求,“Web”本地存储对是正确的解决方案。

    您需要安全的cookie。Cookie前缀\uuuu Secure-*和\uuuuu Host-*通过确保Cookie仅由安全连接设置和发送,以防止Cookie嗅探和中间人攻击,从而保护您的Cookie


    为了增加安全性,您可以强制用户仅从特定IP地址的白名单登录。

    您能否详细说明一下,在我上面描述的场景中,这将如何工作?您不需要cookies来跟踪服务器上的状态,没有cookies,您可以在每次请求时从客户端将状态传递给服务器,阅读关于REST的链接,它非常简单understand@makerofthings7您在每个请求上传递凭据,这是状态的一部分,您不了解无状态意味着什么,如果您认为安全需要cookie,则不了解安全身份验证。像SSL这样的端到端加密使事情变得安全,而不是cookies。@JarrodRoberson你能给我看一个使用基于表单的身份验证方法的示例吗?我所知道的在每个请求上发送creds的唯一方法是使用隐式Kerberos、NTLM等。这对OAuth、OpenID、WS-Trust、Facebook等不起作用。@makerofthings7您将从阅读中学到更多,以便理解,而不是争论事实上没有任何依据的观点。我想解释的是,你混淆了许多不相关的事情,你更感兴趣的是在不完全理解的基础上争论你的缺陷点。有很多方法可以对状态进行编码,cookies是最糟糕的方法之一。当然祝你好运。我投票结束这个问题,因为它明确要求讨论和发表意见。不要寻找一个明显的答案,因为根本没有。我对处理这个问题的不同观点感兴趣。我不同意结束这个问题,这是一个不断发展的问题,可行且最好的解决方案来来往往。设备指纹识别也可能很有趣。请注意,通过localStorage和sessionStorage,页面上运行的所有Javascript脚本都可以访问它。因此,将您的安全凭据(令牌、用户名、pwd或其他什么)放在那里不是最好的主意。更多信息:@seBaka28 1)在任何地方以明文形式存储密码通常是可以避免的。2) 根据定义,您页面上的所有JS都可以访问包括登录表单在内的网页内容。@curiousguy 1)非常同意2)仍然存在很大差异,例如,只有在您登录后才添加的脚本(一些JS用于裁剪个人资料图片或其他内容),这些脚本仍然可以访问本地存储,但不是登录form@seBaka282)登录表单可以位于任何页面上。这取决于浏览器是否“自动填充”所有表单(无需任何用户操作),即使是不可见的表单,以及是否保存密码。如果你这样做了,密码可以通过任何页面上的脚本恢复。很有趣,所以。。。一个解决方案是像大型网站一样为登录过程提供一个单独的页面?