security - 强制使用基本身份验证时保持登录状态的最安全方法
问题描述
使用我无法控制的基本身份验证来存储用于后续调用 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')}`,
},
})
},
}
解决方案
推荐阅读
- rxjs - 如何正确处理此效果中的错误?
- android - Parcelable 在 Fragment 中写入可序列化对象时遇到 IOException
- c# - 在 C# 中执行 Powershell 脚本失败
- exception - Spring AMQP RPC消费者并抛出异常
- animation - 用另一条路径掩盖 SVG 路径
- python-3.x - Python - 使用 print() 函数在 2 个连接字符串之间添加空格的任何其他方式
- c# - 属性更改时不会触发 INotifyPropertyChanged
- javascript - 找到最短的数学运算序列
- java - 使用 Mockito 模拟使用 Pageable 和 Slice 接口的 DB 调用时出现 NullPointerException
- javascript - jQuery - 使用全局函数