我开始使用angularJS开发一个Web应用程序,但不确定是否所有内容(客户端和服务器端)都受到正确保护。安全性基于单个登录页面,如果可以对凭据进行检查,则我的服务器将发回具有自定义时间有效性的唯一令牌。所有其他REST
api均可通过此令牌访问。该应用程序(客户端)浏览到我的入口点,例如:https
:
//www.example.com/home.html用户插入凭据并收到唯一令牌。该唯一令牌是使用AES或其他安全技术存储在服务器数据库中的,不是以明文格式存储的。
从现在开始,我的AngluarJS应用将使用此令牌对所有公开的REST Api进行身份验证。
我正在考虑将令牌临时存储在自定义的http cookie中;基本上,当服务器验证凭据时,它将发回新的Cookie Ex。
app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T
Cookie上设置了安全和HTTP
Only标志。Http协议直接管理新的cookie并将其存储。连续的请求将向cookie提供带有新参数的cookie,而无需对其进行管理并使用javascript进行存储;在每次请求时,服务器都会使令牌无效并生成一个新令牌,然后将其发送回客户端->防止使用单个令牌进行重放攻击。
当客户端从任何REST Api 收到HTTP状态 401未经授权的 响应时,角度控制器将清除所有cookie,并将用户重定向到登录页面。
我是否应该考虑其他方面?将令牌存储在新的cookie或localStorage中更好吗?关于如何生成独特的强令牌的任何技巧?
编辑(改进):
如果通过https与服务器通信,则重放攻击没有问题。
我的建议是利用服务器的安全技术。例如,JavaEE具有开箱即用的登录机制,基于声明性的基于角色的资源保护(您的REST端点)等。这些都由一组cookie进行管理,您不必关心存储和存储。到期。检查一下您的服务器/框架已经给您带来了什么。
如果您打算将API面向更广泛的受众群体(而不是专门针对所服务的基于浏览器的UI)或其他类型的客户端(例如,移动应用程序),请考虑采用OAuth。
Angular具有以下安全功能(弹出时会添加更多功能):
CSRF / XSRF攻击
Angular支持开箱即用的CSRF保护机制。查看$http
文档。需要服务器端支持。
内容安全政策
Angular具有表达式评估模式,可与启用CSP时强制执行的更严格的JavaScript运行时兼容。查看ng- csp
文档。
严格的上下文转义
使用Angular的新$sce
功能(1.2+)可以使您的UI抵御XSS攻击等。它不太方便,但更安全。在此处查看文档。
cookie设置了secure和HTTP Only标志。Http协议直接管理和存储新的cookie。连续的请求将显示带有新参数的cookie,而不需要管理它并用JavaScript存储它;在每次请求时,server都会使令牌失效并生成一个新令牌并将其发回客户端-->用单个令牌防止重放攻击。 当客户机从任何REST Api收到HTTP Status401未经授权的响应时,angular控制器将清除所
我正在尝试通过连接到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做不到同样的事情。 非常感谢