在客户端浏览器的会话存储中存储访问令牌是否安全?

时间:2018-06-06 04:44:38

标签: asp.net-web-api oauth access-token

我在Web API中使用基于令牌的身份验证来验证用户。我正在使用客户端浏览器会话存储来存储访问令牌。这样做是否安全? 我应该在哪里存放它使它更安全。

 $('#btnLogin').click(function () {
    $.ajax({
        // Post username, password & the grant type to /token
        url: '/token',
        method: 'POST',
        contentType: 'application/json',
        data: {
            username: $('#txtUsername').val(),
            password: $('#txtPassword').val(),
            grant_type: 'password'
        },
        //response(Access Token) stores inside session storage of Client browser.
        success: function (response) {
            sessionStorage.setItem("accessToken", response.access_token);

1 个答案:

答案 0 :(得分:1)

使用staticlocalStorage来存储客户端令牌以执行后续经过身份验证的api请求是完全安全的,只要您在api中已经采取了良好的措施来管理该令牌并保持安全:

  • 生成的令牌不包含部分或全部凭据(用户或密码。

  • 令牌不仅仅是base64(用户名:密码),因为它可以轻松解码并破坏用户凭据。

  • 令牌有一些过期。

  • 您正在使用https来呼叫您的api,以确保请求和响应已加密。所以任何人“偷窥”都不会在提出请求时看到令牌或凭证。

  • 令牌不包含敏感信息

  • 令牌被签名(这将是伟大的!,它取决于您正在生成什么类型​​的令牌)所以没有人可以篡改令牌,以防该令牌与用户ID相关或包含到期本身。

  • 令牌不短(长度),或易于“猜测”,生成(想想布鲁斯力量攻击)。签名确实对此有所帮助,尤其是作为令牌本身一部分的到期时间(例如,参见JWT令牌)。

-

本地或会话存储存储与cookie一样安全,请以这种方式查看。如果客户端的设备遭到入侵,cookie或本地存储,则整个过程都会受到影响。因此,在那一点上不会产生太大的影响。