【问题标题】:Is it safe to store token in browser local storage after web api authenticationWeb api身份验证后将令牌存储在浏览器本地存储中是否安全
【发布时间】:2018-06-10 21:00:25
【问题描述】:

我正在使用 Asp.net Web API 2 为后端构建 angular js 1.X 应用程序。在 Web API 2 中,我可以通过在令牌端点 (ApplicationOAuthProvider) 上发布我的凭据来轻松获取令牌。
现在,由于 Angular JS 是客户端,所以我需要在客户端放置一个位置来保存此令牌,以便我可以在所有后续 HTTP 调用中发送此令牌以验证客户端。
为此,我已将我的令牌存储在浏览器的本地存储中。但我并不认为在此处存储令牌是否安全(客户端)。
因为任何有权访问我的系统的人都可以轻松获得令牌并在他的机器上使用它来登录系统。
如果有人有建议,请指导我。谢谢

【问题讨论】:

    标签: angularjs asp.net-web-api2 access-token


    【解决方案1】:

    这是 Web 应用程序中身份验证的基本挑战之一。简短的回答是,“已经足够好了。”

    更长的答案是您应该验证:

    1. 令牌足够长以防止暴力破解
    2. 令牌足够随机以防止猜测
    3. 通信始终通过 TLS 以防止拦截/嗅探

    要获得全面的最佳实践,您应该花一些时间访问OWASP 网站。

    【讨论】:

    • 如果只使用 http cookie 来存储令牌信息会怎样
    • 这也是一个很好的做法,但如果它们不是随机的、长的并且通过安全通道发送,它将无法保护您。这只会保护您免受跨站点脚本攻击。
    • 正如你所提到的,它应该足够长以防止暴力破解。当我使用.net ApplicationOAuthProvider 时,它自动将令牌加密为长加密字符串。
    • 正如你所提到的,它应该足够长以防止暴力破解。当我使用.net ApplicationOAuthProvider 时,它会自动将令牌加密为长加密字符串。因此它已经可以安全地抵御暴力攻击。我的观点是,如果有人通过手动访问或通过其他 wat 从我的机器复制此令牌,那么他不需要解密,因为他只需在任何随机机器上的请求标头中传递此令牌即可直接访问。如果有人从另一台机器(不是生成它的机器)发布此令牌,有什么办法。
    • 除非您要实现存储在智能卡上的客户端证书,否则您无能为力,@tajindersingh
    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 2013-06-27
    • 2019-02-07
    • 2015-03-09
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多