有没有什么安全的方法可以在客户端保留 SPA 的其余身份验证令牌?

2023-11-30

如果我们从其余服务器获取令牌并在每个授权请求中使用 AuthorizationToken 标头,则当浏览器页面关闭时,我们仍然需要保留它。

唯一通用的方法是将令牌放入 cookie。但这样即使cookie不用于身份验证,也可能被XSS窃取。 我们不能使用 httpOnly 标志。所以:

  1. 还有其他具体方法来保护令牌并保证其安全吗?

  2. 如果整个会话期间都使用HTTPS,并且带有token的cookie被盗,是否有可能用token劫持https会话?


我的回答可能有点天真,但为什么不将令牌存储在浏览器的持久存储中。如果你使用 Angular,代码如下:

function((...), $window) {
    (...)
    $window.sessionStorage['userToken'] = '<user-token>';
}

我真的没有看到其他方法(cookie 除外)在浏览器页面关闭时保留此类提示。

Cookie 的问题在于,您的客户端需要成为浏览器才能透明地利用此功能...此外,它实际上并不是 RESTful 服务中更好的身份验证方法;-)

您可以将其与具有到期日期和刷新功能的安全令牌机制结合起来,如以下链接所述:https://templth.wordpress.com/2015/01/05/implementing-authentication-with-tokens-for-restful-applications/.

此外,您还可以使用Angular等提供XSS解决方案的JS框架。例如,请参阅以下链接:

  • http://java.dzone.com/articles/angularjs-how-handle-xss
  • angularjs + 防止跨站脚本

希望它能为您的问题提供一些提示, 蒂埃里

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有什么安全的方法可以在客户端保留 SPA 的其余身份验证令牌? 的相关文章

  • 客户端登录 - 如何在客户端安全地存储凭据?

    许多 API 都提供通过用户 密码组合远程访问其数据的功能 我想知道存储这些值的最佳方式是什么 高度安全的方式 即使 100 是不可能的 以便直接连接它们而无需每次都询问这些值 我推荐以下三种方法之一 使用身份验证令牌完全避免存储密码 在此
  • AWS Amazon - 登录循环卡住

    我已经使用 AWS 亚马逊几年了 但是 突然当我登录时 我进入了此验证部分 他们将验证码发送到我的电子邮件 我收到了该代码 因此 我输入收到的代码 最终返回登录页面 所以我登录后 同样的事情一遍又一遍地发生 我无法进入我的仪表板 它只是不断
  • Rails、REST 架构和 HTML 5:带有预检请求的跨域请求

    在致力于使我们的网站 HTML 5 友好的项目时 我们渴望采用跨域请求的新方法 不再通过隐藏的 iframe 发布 使用访问控制 http www w3 org TR access control 根据规范 我们开始设置一些测试来验证各种浏
  • 浏览器关闭时 Omniauth 会话过期

    在我的 Rails 3 应用程序中 我使用 Omniauth 进行用户身份验证部分 fb twitter 实际上我遵循这个 https github com RailsApps rails3 mongoid omniauth https g
  • Keycloak-js updateToken(minValidity) 需要澄清

    我在Keycloak js中阅读了很多该方法的示例 但没有对以下方法进行明确的解释 updateToken minValidity number KeycloakPromise
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • 自托管 WCF REST 服务和基本身份验证

    我创建了一个自托管的 WCF REST 服务 带有 WCF REST Starter Kit Preview 2 中的一些额外内容 这一切工作正常 我现在正在尝试向服务添加基本身份验证 但我在 WCF 堆栈中遇到了一些相当大的障碍 这阻止了
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • 什么时候使用Jersey的@Singleton注解?

    我正在开发 RESTful Web 服务 并在阅读泽西岛时文档 https jersey java net documentation latest jaxrs resources html d0e1851我发现了一个注释 Singleto
  • 在哪里可以找到 OpenID 提供商 URL 列表? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我已经在我的网站上实现了 OpenID 但我很难找到 OpenID 提供商 URL 列表 我以为这很容
  • 获取 Parse Analytics 自定义仪表板

    是否可以使用 Javascript 或 REST API 从 Parse 获取应用程序分析 我想在我自己的仪表板中显示下载数量和自定义事件 不可以 您只能通过 REST API 推送 https parse com docs rest ht
  • 在 ASP.Net Web API 中的日志记录 DelegatingHandler 中读取 HttpRequestMessage.Content 时会丢失

    当尝试控制器中的操作中的对象时 它偶尔似乎为空 我发现这是由于ReadAsStringAsync in the SendAsync 覆盖DelegatingHandler 问题出在内容上 当我的客户端发送内容主体并在记录器中读取它时 控制器
  • TortoiseSVN 不要求身份验证?

    我已经在conf文件中设置了一个新的SVN存储库 运行SVNServe anon access none SVNServe 忠实地正确地做到了这一点 但是当我尝试使用 TortoiseSVN 浏览存储库时 它只是说不允许访问 它不应该要求我
  • 使用 WCF 支持“application/x-www-form-urlencoded”发布数据的最佳方式?

    我正在基于 W3C 规范构建 WCF 服务 该规范定义了接受 application x www form urlencoded 发布数据的 RESTful Web 服务端点 默认情况下 WCF 不支持这种类型的消息编码 我发现了许多创建如
  • 注册期间现有电子邮件的 422 或 409 状态代码

    我正在构建 RESTful API 遇到了一种情况 在用户注册期间 如果电子邮件已存在 则在422 and 409哪个http响应代码有意义 我浏览过类似的one https stackoverflow com questions 9269
  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 如何绕过Keycloak登录表单直接跳转到IDP登录?

    我正在运行saml 经纪人身份验证 https github com keycloak keycloak tree 3 2 1 Final examples broker saml broker authentication例子 我在 UI
  • 通过移动应用程序使用 Moodle 进行身份验证

    我的移动应用程序需要登录 Moodle 以从 Web 服务获取 Json 数据并使用 Angular 显示它 为此 我需要传入用户名和密码并取回 Moodle Web 服务令牌 因此我的应用程序不需要再次登录 至少在令牌过期之前 这是 提出
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a

随机推荐