lep*_*_87 0 security https http-headers cors jwt
在我的应用程序中,我包含了来自不同服务器/域的页面.为简单起见我将把我的主要应用Web应用的一种,另幅B.
某处我甲,用户已登录后,我将加载从页面乙通过使用CORS和JWT.在A中,我创建了一个传递给Ajax的编码令牌.Ajax在Header中添加了这个令牌("Authorization" = bearer + encoded token).
B然后使用此令牌解码并获取它所属的usersId和组,并确定用户是否有权访问该资源.此外,Web B中还有一个Access-Control-Allow-Origin = Web A设置,仅接受来自A的请求.
我的问题是关于CORS的安全部分和jwt的使用.在开发过程中,当使用Postman直接访问B中的资源时,我可以轻松绕过" Access-control-allow-origin ".只要我有正确的令牌,资源就会被送回来没有问题!我的意思是只需要一些潜在的黑客获取该编码的字符串,他们就可以轻松地使用Postman查看资源.
在涉及安全部分时,下一步是什么,因为我完全迷失了!
希望我能清楚地解释这个问题.所有帮助都非常感谢
在攻击者获取用户的JWT访问令牌并直接从Web B请求资源的情况下,CORS并不意味着保护您.
实际上,CORS根本不是一个安全功能,而是一种安全地绕过浏览器的同源策略的方法,这是一种安全功能.同源策略(基本上每个浏览器都实现)限制网页访问来自不同源的网页上的数据.
想象一下浏览器没有实现同源策略的情况.任何网页都可以从任何来源请求数据,这意味着任何恶意网站都可以从银行,电子邮件帐户或其他任何地方请求数据.这个浏览器很乐意发送与这些来源相关的任何HTTP cookie,并且所有这些请求都将被授权.对这个浏览器的攻击是微不足道的.
因此,很明显,任何浏览器都需要同源策略.但是,正如您所知,网站在原始数据库之间共享数据通常很有用.这就是CORS规范创建的原因.只要双方同意共享数据跨越原点,浏览器就会允许发送请求.
要回答您的真实问题,阻止攻击者直接使用JWT的方法是不允许他们首先访问它.您应该像保存HTTP会话cookie或密码一样保护JWT,因为它就是这样.
归档时间: |
|
查看次数: |
6620 次 |
最近记录: |