【问题标题】:How does authentication happens after first request?第一次请求后如何进行身份验证?
【发布时间】:2015-05-04 15:39:19
【问题描述】:

我试图了解身份验证如何在网站上进行。我不是要代码,我是在尝试理解这个概念。当用户第一次访问网站时,他/她登录并且我的服务器对其进行身份验证。但是当用户移动到下一页时,由于http是无状态的,服务器如何知道当前用户是同一个登录用户?

我已经想到了几种方法,如下所示,但我不相信它们会完美地工作。作为插件,它们可能效率也不高。

  • 在每个请求中发送userid/password - 非常糟糕的设计,因为用户名/密码可能会被黑!
  • 使用cookies - 再次存在缺陷,用户可以将cookie发送给他/她的朋友,然后我的服务器将处于模棱两可的状态:|

有没有更好的方法在后续请求中对用户进行身份验证?

注意:我不允许使用https 协议,因为它比http 慢并且有一些商业原因。

【问题讨论】:

    标签: authentication


    【解决方案1】:

    您可以使用一个令牌来保存会话应该存在多长时间。并且该令牌将随每个请求(您想使用它)一起发送,并在@服务器上进行验证。

    我认为关于令牌的好帖子是这个:What is token based authentication?

    【讨论】:

    • 朋友能否从用户计算机(类似于 cookie)或通过网络访问令牌?如果是,那么这也可能没有用:|。我的意思是,假设令牌是abcd,那么黑客可以通过网络请求向服务器发送相同的令牌并掩盖用户的身份,不是吗?
    • 从计算机上可能是的,如果您使用 HTTPS,那么网络应该是安全的。令牌可以包含用户的 ip,以确保不能从另一个网络使用相同的令牌。
    • 如果可以从计算机复制,那么它是不安全的,类似于cookie。我们不能使用 ip,因为 ip 可以被屏蔽:|。在这里,我假设用户想要破解/入侵我的服务器。 https 是一个选项,但不是解决方案,对吧?无论如何,我的问题不能使用 https :(
    • 我不确定如何防止用户计算机上的东西被盗,会话的生命周期短是一种选择。我的意思是你不能防止东西从用户的计算机上被盗,只有从计算机到服务器的方式。而 https 应该涵盖这一点
    • https 的问题在于,它们既昂贵又慢。所以,我不能使用它。所以,你的意思是除了https,我没有其他方法可以安全连接?
    猜你喜欢
    • 2019-06-10
    • 2014-02-10
    • 2012-09-24
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2014-12-20
    • 2012-08-21
    • 2020-08-16
    相关资源
    最近更新 更多