前言

JWT认证方式目前已被广泛使用,一直以来我们将token放在请求头中的Authorization中,若通过此种方式,一旦token被恶意窃取,攻击者可肆意对用户可访问资源进行任意索取,我们大多都是通过登录成功后,响应AccessToken,然后由前端将token存储在相关Storage中,然后每次将其放请求头而认证请求,由于token是极其敏感信息,所以我们不能将其交由前端去处理,而应由后台获取对前端不可见。对安全有较高要求的平台,我们通过Http Only Cookie来解决token恶意窃取问题

Http Only Cookie

Http Only Cookie简言之则是将相关信息响应时存储在Cookie中,而客户端脚本无法访问,每次请求时,则将自动携带所有信息到服务器。例如,京东存储相关信息

Http Only Cookie保护AccessToken-LMLPHP

接下来我们看看在.NET Core中如何将AccessToken以Http Only方式存储在Cookie中

[AllowAnonymous]
[HttpGet("api/test/get")]
public IActionResult Get()
{
    Response.Cookies.Append("x-access-token", GenerateToken(),
      new CookieOptions()
      {
        Path = "/",
        HttpOnly = true
      });

    return Ok();
}
10-10 10:37