不太清楚 .htaccess/.htpasswd 身份验证如何保存密码

不太清楚 .htaccess/.htpasswd 身份验证如何保存密码

没错。我的网络目录中的 admin 文件夹中有一个 .htaccess 文件。它包含以下内容:

AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /storage/ssd2/048/1839048/.htpasswd
Require valid-user

我的网络目录上方还有一个 .htpasswd 文件,因此访问者看不到它:

test:dGRkPurkuWmW2

一切正常,但我不知道这种身份验证方法如何保存密码。当我第一次访问受保护的目录时,它要求我输入用户名和密码,但现在我刷新页面时它不再要求我输入。我清除了浏览器中的 cookie 并重新启动它,但密码仍然保存。有人知道这是怎么回事吗?

答案1

清除 cookies 没有帮助,因为密码是由浏览器保存的,但它不在曲奇饼定义于HTTP状态管理机制RFC 6265),例如会话 ID:

== 服务器 -> 用户代理 ==

   Set-Cookie: SID=31d4d96e407aad42; Path=/; Secure; HttpOnly
   Set-Cookie: lang=en-US; Path=/; Domain=example.com

== 用户代理 -> 服务器 ==

   Cookie: SID=31d4d96e407aad42; lang=en-US

这种 SID 由更复杂的身份验证机制使用,该机制仅检查一次密码,然后仅根据 cookie 的存在来信任该用户已通过身份验证。

反而,AuthType Basic使用Authorization = credentials来自HTTP 身份验证RFC 7235, 4.2)。这是一种非常基本的身份验证机制,它会在每个 HTTP 请求上发送凭据,格式为:credentials = auth-scheme [ 1*SP ( token68 / #auth-param ) ]

浏览器不断发送,直到收到新的401 UnauthorizedHTTP 响应中的状态码:

如果请求已经过身份验证并且指定了范围,则相同的凭证将被假定对该范围之内的所有其他请求有效(假设身份验证方案本身不需要其他方式,例如根据质询值而变化的凭证或使用同步时钟)。

强制执行此操作而无需主动配置要发送的内容的一种方法401是让用户使用其中包含其他用户名和密码的 URL,即(链接或 JS)。http://forcelog:[email protected]/

浏览器通常会在重新启动时清除基本身份验证信息。此外(非完整列表):

  • chrome://restart当您使用地址栏重新启动时,Chrome 和 Chromium 会清除它。
  • 当您清除历史记录时,Firefox 也会清除它:活动登录。
  • Internet Explorer 允许 ActiveX 控件清除它。

相关内容