首页 > 解决方案 > 强制使用基本身份验证时保持登录状态的最安全方法

问题描述

使用我无法控制的基本身份验证来存储用于后续调用 API 的凭据的最佳/最安全方法是什么?

谢天谢地,我们显然只在我们的 beta 测试阶段使用基本身份验证,但我已经活了足够长的时间,知道有时安全细节会在产品人员和 beta 用户重用密码时丢失,所以希望尽可能安全尽管这是暂时的事情。

目前我正在使用会话存储以 base64 形式存储凭据。这真的是最好的吗?

请注意,为了摆脱丑陋的浏览器登录提示,WWW-Authenticate标头已从服务器响应中删除。这意味着浏览器不再“神奇地”为后续调用缓存身份验证信息,因此我需要以某种方式手动进行。

这是我目前正在使用的。虽然它在技术上有效,但有什么方法可以降低安全风险?

const baseUrl = getServerBaseUrl()

const authenticationService = {
  authenticate: (username, password) => {
    const token = btoa(`${username}:${password}`)

    sessionStorage.setItem('credentials', token)

    return axios.get(baseUrl, {
      headers: {
        Authorization: `Basic ${token}`,
      },
    })
  },

  checkAuthentication: () => {
    return axios.get(baseUrl, {
      headers: {
        Authorization: `Basic ${sessionStorage.getItem('credentials')}`,
      },
    })
  },
}

标签: securitybasic-authentication

解决方案


推荐阅读