相关疑难解决方法(0)

在浏览器中存储JWT的位置?如何防范CSRF?

我知道基于cookie的身份验证.可以应用SSL和HttpOnly标志来保护来自MITM和XSS的基于cookie的身份验证.但是,需要采取更多特殊措施以保护其免受CSRF的影响.它们有点复杂.(参考)

最近,我发现JSON Web Token(JWT)作为身份验证的解决方案非常热门.我知道有关编码,解码和验证JWT的内容.但是,我不明白为什么有些网站/教程在使用JWT时不需要CSRF保护.我已经阅读了很多,并试图总结下面的问题.我只是希望有人可以提供JWT的全貌并澄清我对JWT误解的概念.

  1. 如果JWT存储在cookie中,我认为它与基于cookie的身份验证相同,除了服务器不需要有会话来验证cookie /令牌.如果没有实施特殊措施,CSRF仍存在风险.JWT不是存储在cookie中吗?

  2. 如果JWT存储在localStorage/sessionStorage中,那么没有cookie所以不需要防止CRSF.问题是如何将JWT发送到服务器.我发现这里建议使用jQuery通过ajax请求的HTTP头发送JWT.那么,只有ajax请求才能进行身份验证吗?

  3. 此外,我发现还有一个博客节目使用"授权标题"和"承载"来发送JWT.我不明白博客谈论的方法.有人可以解释一下"授权标题"和"持票人"的更多信息吗?这是否使所有请求的HTTP头传输JWT?如果是的话,CSRF怎么样?

security authentication cookies csrf jwt

142
推荐指数
6
解决办法
5万
查看次数

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

我开始使用angularJS开发一个web应用程序,我不确定一切都是正确的安全(客户端和服务器端).安全性基于单个登录页面,如果检查完凭证,我的服务器会发回一个具有自定义时间有效性的唯一令牌.所有其他REST api都可以通过此令牌访问.应用程序(客户端)浏览到我的入口点ex:https://www.example.com/home.html用户插入凭据并接收一个唯一令牌.此唯一令牌使用AES或其他安全技术存储在服务器数据库中,不以明文格式存储.

从现在开始,我的AngluarJS应用程序将使用此令牌对所有暴露的REST Api进行身份验证.

我正在考虑将令牌临时存储在自定义的http cookie中; 基本上,当服务器验证凭据时,它会发回一个新的Cookie Ex.

app-token : AIXOLQRYIlWTXOLQRYI3XOLQXOLQRYIRYIFD0T
Run Code Online (Sandbox Code Playgroud)

该cookie具有安全HTTP Only标志设置.Http协议直接管理新cookie并存储它.连续请求将使用新参数呈现cookie,而无需管理它并使用javascript存储它; 在每次请求时,服务器使令牌无效并生成一个新令牌并将其发送回客户端 - >使用单个令牌防止重放攻击.

当客户端从任何REST Api 收到HTTP状态401未授权响应时,角度控制器清除所有cookie并将用户重定向到登录页面.

我应该考虑其他方面吗?将令牌存储在新cookie或localStorage中更好吗?有关如何生成唯一强令牌的任何提示?

编辑(改进):

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

authentication cookies rest angularjs angularjs-authentication

66
推荐指数
2
解决办法
8万
查看次数

基于令牌的身份验证中的会话

我正在PHP Lumen中构建一个应用程序,它在登录时返回一个令牌.我不知道如何超越这个.

我该如何使用这些令牌维护会话?

具体来说,如果我使用reactjs或vanilla HTML/CSS/jQuery,如何在我为Web应用程序的安全部分发出的每个请求中发送它们,如何在客户端存储令牌?

php jquery authorization reactjs lumen

20
推荐指数
2
解决办法
6497
查看次数

我们如何分离管理员和用户的路线?

我在node js. 我正在为仪表板创建路线。

  1. 用户登录并获取JWT token.
  2. 通过发送令牌,用户可以访问一些与用户相关的路由(编辑、删除、注销路由等)。
  3. 但是对于管理员,我想创建可以查看用户列表、编辑或删除用户、检查用户注销时间的路由。我还在表中设置了标志来标识此人是用户还是管理员。

如何验证后端管理员的路由?

javascript mongodb node.js express reactjs

0
推荐指数
1
解决办法
749
查看次数