当前位置: 首页 > 知识库问答 >
问题:

使用AngularJS进行身份验证,使用REST Api WS进行会话管理和安全问题

贲招
2023-03-14
app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T

cookie设置了secure和HTTP Only标志。Http协议直接管理和存储新的cookie。连续的请求将显示带有新参数的cookie,而不需要管理它并用JavaScript存储它;在每次请求时,server都会使令牌失效并生成一个新令牌并将其发回客户端-->用单个令牌防止重放攻击。

当客户机从任何REST Api收到HTTP Status401未经授权的响应时,angular控制器将清除所有cookie,并将用户重定向到登录页面。

我应该考虑其他方面吗?将令牌存储在新cookie中更好还是存储在localstorage中更好?关于如何生成一个独特的强令牌有什么提示吗?

  • 我决定使用HMAC-SHA256作为会话令牌生成器,有效期为20分钟。我生成一个随机的32字节GUID,附加一个时间戳,并通过提供一个40字节的密钥来计算HASH-SHA256。由于令牌的有效性非常低,所以很难获得冲突。
  • cookie将具有域和路径属性以提高安全性。
  • 不允许多次登录。

共有1个答案

养俊驰
2023-03-14

如果您通过https与服务器对话,则不会遇到重播攻击的问题。

我的建议是利用服务器的安全技术。例如,JavaEE具有开箱即用的登录机制、声明性的基于角色的资源保护(您的RESTendpoint)等。这些都是用一组cookie管理的,您不必关心存储和过期。检查您的服务器/框架已经提供了什么。

如果您计划将API公开给更广泛的受众(不是专门针对您所服务的基于浏览器的UI)或其他类型的客户机(例如移动应用程序),请考虑采用OAuth。

Angular支持开箱即用的CSRF保护机制。签出$http文档。需要服务器端支持。

内容安全策略

Angular的表达式计算模式与启用CSP时强制执行的更严格的JavaScript运行时兼容。签出ng-csp文档。

 类似资料:
  • 问题内容: 我开始使用angularJS开发一个Web应用程序,但不确定是否所有内容(客户端和服务器端)都受到正确保护。安全性基于单个登录页面,如果可以对凭据进行检查,则我的服务器将发回具有自定义时间有效性的唯一令牌。所有其他REST api均可通过此令牌访问。该应用程序(客户端)浏览到我的入口点,例如:https : //www.example.com/home.html用户插入凭据并收到唯一令

  • 我正在尝试通过连接到LDAP使用Spring Security进行我的第一个演示。 我使用的Sping版本是:3.1.0.RELEASE 以下是我的security-integration.xml: 然而,每当我部署我的战争时,我都会遇到这个例外: HTTP状态500 - 类型异常报告 消息 描述服务器遇到一个内部错误(),该错误阻止它完成此请求。 例外情况 javax.servlet。Servl

  • 这是一个很好的OAuth2用例吗?还是OAuth2仅用于授予第三方应用程序对用户数据的访问权限? 如果OAuth2不是可行的方法:如何将用户令牌安全地传递给浏览器,并防止中间人攻击?用户令牌应该在一定时间后过期吗?

  • 我需要一些有关Azure API管理服务的帮助。 目前,我们有一个单页应用程序,它使用Azure上托管的两个后端服务(WebApi.NETCore)。为了对用户进行身份验证和授权,我们使用IdentityServer(也作为服务托管在Azure上)SubscriptionService。在这里,IdSrv对用户进行身份验证,并定义webapp可以访问哪些api。如果用户拥有给定API的权限,Sub

  • 问题内容: 我需要使用PostForm方法将代理与auth一起使用。如果我使用类似(简体)的内容: 我可以轻松做到,并且效果很好。但是现在,我正在编辑第三方程序包,并尝试将代理添加到现有代码中: 在我看来,它是行不通的,而且失败了。在此示例中,没有身份验证的代理可以正常工作。有人知道吗,在这种情况下我可以在auth中使用代理吗? 问题答案: 您正在尝试向响应中添加标头,这不是您发送到服务器的内容,

  • 我正在尝试使用urllib3连接到网页。代码如下所示。 如果我们假设url是需要使用用户名和密码进行身份验证的某个网页,那么我是否使用正确的代码进行身份验证? 我使用urllib2做这件事很舒服,但使用urllib3做不到同样的事情。 非常感谢