apache - HTTP 身份验证与 cookie

标签 apache http cookies authorization

对于需要登录凭据的 Web 服务,基于 cookie 的身份验证似乎是当今的明确选择。

但是如果您正在开发一个 Web 服务,其中客户端不是浏览器,而是通过 HTTP 访问资源的客户端软件(例如移动应用程序),您会使用 HTTP 身份验证还是 cookie 身份验证?

HTTP 认证:

  • Web 服务器处理身份验证,以便在需要时更轻松地更改 Web 应用程序平台
  • 自动应用于非代码资源(例如 JPG、XML 等)(边问:有没有办法使用基于 cookie 的身份验证来做到这一点?)
  • 更难将数据库存储的凭据与服务器身份验证 (.htaccess/.htpasswd) 集成

Cookie 验证:

  • 细粒度的访问控制(代码资源可以根据凭据做出不同的响应)
  • 控制 session 过期(通过 cookie 过期)
  • 完全控制用户登录体验

我还遗漏了哪些其他注意事项?还有其他优点/缺点吗?

Some helpful discussion is here

最佳答案

使用 HTTP 身份验证,代码资源可以根据发出请求的用户做出不同的响应。用户名通常通过 HTTP header 传递给代码。

使用 HTTP 身份验证,您仍然可以使用 session 并享受它们带来的相同好处。事实上, session 窃取不再是什么大问题,因为您可以测试存储在 session 中的用户是否与通过 HTTP 身份验证进行身份验证的用户相同。出于同样的原因, session 标识符不需要像基于 Cookie 的身份验证那样难以猜测。

关于apache - HTTP 身份验证与 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948772/

相关文章:

php - 制作代理友好网站的指南和最佳实践

javascript - 带有 javascript 的多个 cookie,策略有人吗?

http - 如果我将 session 存储在 localStorage 而不是 cookie 中,我的网站会更安全吗?

php - 如何使用/htdocs 目录结构中的文件设置 SVN

apache2 上的 Python 索引页面

http - 在设备上测试 http 连接

http - 如何知道使用什么端口从 Postman 发出 http Get 请求

http - 如何通过代理转发 http 2 协议(protocol)版本?

ios - SfSafariViewController 和共享 cookie 存储

php - MySQL 连接在 PHP 中意外失败