【发布时间】:2021-02-04 02:26:33
【问题描述】:
在 Angular 应用程序中,我将 XHR 登录请求发送到带有 http auth 标头的无状态休息服务器:
http
.get(`${site.url}/login`, {
headers: {
Authorization: `Basic ${btoa(`${username}:${password}`)}`,
},
withCredentials: true,
})
无论何时我请求同一台服务器,我都不需要再次发送凭据:它们由浏览器自动保存。这很好,这样我就不必在浏览器上保存凭据(服务器是无状态的,所以没有可用的会话或令牌)。
然而这引入了一个安全问题:当用户注销时(这是一个存储在浏览器中的简单布尔值),他的浏览器仍然能够连接到服务器:在 XSS 的情况下有人可以再次连接。
有什么方法可以通过 Javascript 清除这些凭据?我看到了一些黑客行为(使用错误的凭据请求服务器...),但我正在寻找一种一致且安全的方法。
【问题讨论】:
标签: javascript angular cross-browser http-authentication