security - 在 header 中发送 session key 与仅 HTTP cookie

标签 security authentication cookies

我想知道在我的系统中发送 session key 的最佳选项。

在我的系统中,有一个供网络浏览器、命令行界面和桌面应用程序使用的 API 服务器。它通过查看 Authorization HTTP header 对用户进行身份验证。

目前,浏览器将 session key 存储在 localStorage 中,并将其附加到需要登录的请求的 Authorization header 中。不过,有人指出,存储 session key 等 secret 的更安全方法是使用 HTTP-Only cookie。

问题是 Web 浏览器客户端将无法读取 HTTP-Only cookie 并将 session key 放入 HTTP header 中。

鉴于这种情况,我正在考虑扩展 API 服务器以使用 Authorzation header 或 cookie 之一来授权用户。这是一个可行的选择吗?还有其他选择吗?

最佳答案

你是对的,Cookie 和授权 header 不兼容。正如您所指出的,您正在考虑两种用例:一种用于浏览器使用,另一种用于 API(cli、桌面应用程序)。

如果您想通过单一身份验证方案支持两者,则需要做更多工作。根据经验,浏览器可以很好地使用 cookie,并且可以轻松安全地进行设置。您应该选择使用浏览器进行基于 cookie 的 session 管理。

Given the situation, I am thinking about extending the API server to use either one of Authorization header or cookie to authorize users. Is this a feasible option, and are there alternatives?

是的,这是可行的,它将使您的浏览器用例更加安全。至于替代方案,我整理了一个 Web Authentication Guide这将极大地帮助您探索您的选择。

关于security - 在 header 中发送 session key 与仅 HTTP cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525490/

相关文章:

google-chrome - 在localhost的情况下如何克服chrome的samesite cookie更新的影响?

java - Java HttpSession 属性存储在哪里?

php - 使用 PHP 和 MySQL 进行密码保护

java - 用于针对 Java servlet 进行身份验证的非 Java Web 应用程序

security - DDOS 攻击 - Restful Web 服务

git - 使用用户名和密码克隆 github 的私有(private)仓库

php - 这个 PHP/MySQL 登录脚本安全吗?更新代码

PostgreSQL 8.3 权限未更新 - 用法错误?

sockets - 通过套接字在 Firebase 中进行身份验证

mysql - 如何使 Apache 用户跟踪 cookie 为十进制而不是十六进制?