我正在构建一个 Web 应用程序并且我的 Web 服务器是安全的,这意味着它使用带有前端的 ssl 证书来加密连接。
当用户登录时,会创建一个看起来像这样的 JSON 对象,并将其发送到服务器。
{
username:"the user's username",
password:"the user's password"
}
在服务器上,这通过使用盐的散列算法进行验证。一旦通过验证,就会创建一个 api token ,该 token 在一定时间内有效,并在 header 中来回传递,以便在发出请求时验证用户。像这种最佳实践/安全一样发送用户名和密码,还是在标题中发送更好?
最佳答案
让我们把它分成很多点:
1) 您使用有效的 SSL 证书来保护用户和服务器之间的通信(必须有效)
2) 在 POST 请求的正文中发送用户名和密码是最佳做法(切勿使用 GET 发送 Credentials 等敏感信息)
3) 在 HTTP 请求和响应 header 中发送 api token 是最佳实践(再次不要使用 GET 发送 session token 等敏感信息)
所以基于以上几点,这个实现似乎没有风险,但你需要考虑以下几点:
1) 在空闲用户的情况下,API token 的超时时间应该很短。 (5 ~ 15 分钟是基于应用程序关键程度的平均值)
2) API token 的长度应该是大约长字符串。 30 ~ 40 个字符。
3) API token 生成必须随机且难以预测以防止( session 预测攻击)。
希望这对你有帮助。
关于json - 在 post 请求正文中的 Json 对象中发送用户名和密码是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45345146/