登录:背景详细信息

Dev*_*ted 8 authentication login

登录网站时会发生什么?

我知道存储cookie和一些信息(什么信息?)被发送到服务器......但也许更详细一些?

Pau*_*xon 51

曾几何时,在互联网上的某个地方....

  • 浏览器:"嘿,我能看到这个网页吗?麻烦的是,我不记得以前跟你说过了"
  • 网站:"确定,填写表格,我需要您的用户名和密码"
  • 浏览器:"你走了"
  • 网站:"太棒了!,欢迎回来koldfyre!这是页面.看看,如果你想要更多的页面,请带上这个标记并在你要求另一个时使用它"
  • 浏览器:酷.该网站给了我一个令牌.我会记住它!

几分钟后

  • 浏览器:"哦!我能看到这个其他网页吗?这是我的令牌"
  • 网站:"那个令牌看起来不错,你好再次koldfyre,这是你的网页"

从本质上讲,就是它.为了记住用户已登录,它为用户提供了一个令牌,它必须在下一个请求时出现.这通常由服务器告知浏览器将此令牌存储在cookie中来实现.

深入研究 - 传输层认证

凭据传递给服务器的方式以及它返回的令牌的性质取决于所使用的身份验证方法.

最简单的HTTP基本身份验证由大多数Web服务器实现提供.它会使您的浏览器弹出熟悉的登录对话框."令牌"只是您的纯文本用户名和密码base64编码.不是特别安全.

服务器还可以提供摘要式身份验证,这可以避免传输实际凭据 - 客户端会使用服务器生成的盐生成其凭据的哈希值.它旨在防止密码嗅探和重放攻击.

更深入 - 应用层认证

为了获得最大的灵活性和控制,大多数站点选择在应用程序层而不是HTTP传输层中实现授权.这提供了更多种安全选择.任何在网页中请求凭据的站点(而不是浏览器的登录对话框)都使用自定义授权方法.

自定义方法在初始交互中会有很大差异,但它们几乎总是会为用户提供包含随机生成的标识符的会话cookie.然后,浏览器会自动为每个后续请求显示cookie.Web应用程序将检查cookie值以确保它仍然有效.

也可以将授权交给受信任的第三方,通常是提供某种单点登录服务.在这种情况下,当您发现用户未经过身份验证时,您会将其退回到身份验证提供程序.他们对他们进行身份验证,然后他们将通过您向提供商验证的某种令牌返回给您.Shibboleth就是其中的一个例子.您还使用OpenID使用的类似方法登录到此站点

进一步阅读

这是一个类似问题的一些很好的答案

该问题的其他答案提供了更多关于完善您的教育的链接!


Cha*_*tin 11

这是一个相当普遍的问题.总而言之,您正在为网站本身建立某种凭证.如果我们采用简单版本,您输入用户名和密码; 这意味着你在网站上表明自己的身份,然后向你展示一个秘密你和其他人都不知道的网站分享(我们希望).这使您确定具有该用户名的人,因此我们说您已经对自己进行了身份验证.

一旦你这样做了,网站设计师必须做出一些设计决定.大多数人不想为每个页面登录,因此网站希望在您的最终存储一些信息,一个凭证.这意味着它可以告诉它仍然是你.通常,正如你所说,这是一个"cookie",它只不过是一个用网站的URL命名的小文本文件.该文件由浏览器存储.

在许多网站上,例如银行业务,您还希望保证所交换的数据不会被第三方拦截.如果是,则使用称为SSL或TLS的协议建立安全连接.这增加了基本连接的是交换建立会话密钥的信息.然后使用该会话密钥加密通信.这通常您更换用户名和密码之前发生,因此您的密码也不会被恶意第三方看到.

在幕后,当您建立安全连接时,该网站会向您的浏览器发送一个称为x509证书的格式化数据块.这是另一种形式的认证; 证书将由颁发者(证书颁发机构或"CA")签署,浏览器可以使用有关CA的存储数据来确保证书是可信的.


wva*_*gen 5

这完全取决于网站的实施.即使使用cookie也不是强制性的,但非常常见.

但在大多数情况下,会发生类似这样的事情:

  • 您使用HTML表单发送用户名和密码.
  • 服务器查找相关用户(使用数据库)
  • 服务器检查密码是否与用户旁边的数据库中存储的密码匹配.
  • 如果密码正确,服务器将存储当前在会话中处于活动状态的用户.该会话的标识符存储在cookie中,该会话的实际数据(当前用户)以该标识符存储在服务器上.

现在您已登录.您将在会话的剩余时间内保持登录状态:

  • 当您从服务器请求另一个页面时,您将发送带有sesison标识符的cookie.
  • 服务器使用此标识符加载会话.在此会话中,存储当前用户,因此服务器知道用户登录了什么.