2016-08-02 77 views
0

在我的应用程序中,我包含了来自不同服务器/域的页面。为简单起见,我将参考我的主要应用程序Web A,以及其他Web BCORS跨源资源共享和Json Web令牌

某处我,用户已登录后,我将通过使用CORS和JWT加载从的页面。 在A我创建了一个编码的令牌,我传递给了Ajax。 Ajax将此令牌添加到标题中(“授权” = 载体+编码的令牌)。

B然后使用该令牌解码并获取usersId和它所属的组,并确定用户是否有权访问资源。 另外还有一个访问控制允许来源 = Web应用的一种设置幅B里面,只接受来自A.要求

我的问题是关于CORS的安全部分与使用智威汤逊。 在开发过程中,利用邮差直接访问资源的时候,我可以easiy旁路访问控制允许来源。 只要我有正确的标记,就可以毫无问题地发回资源!我的意思是只需要一些潜在的黑客掌握该编码字符串,并且他们可以轻松使用邮递员查看资源。

当涉及到安全部分时,下一步是什么,因为我完全失去了!

希望我明确解释了这个问题。高度赞赏所有帮助

+0

你有没有想过这个?我目前想要做类似于你的事情。我想创建一个客户可以在其网站上使用的小部件。我只希望在我的网站上创建帐户的客户能够使用返回小部件的api。 – WBuck

回答

1

这是完全正确的。 CORS的存在是为了确保用户在其浏览器中的安全。直接浏览网站B或卷曲不受CORS保护。服务器可能会从各种客户端获得任何类型的请求,并且必须保护自己。

B站点的安全来自正确使用JWT(最好是通过HTTPS)。首先,令牌用秘密签名。这让你知道别人没有改变它或自己创建一个。其次,有效载荷应该包括相对较短的到期时间。在这段时间之后,令牌的接收者应该忽略它,这样一个持有该令牌的中间人可以用很短的时间来使用它。第三,如果您只通过HTTPS传递令牌,那么您的任何其他人都会得到它的机会很低。

3

CORS并不意味着保护你在攻击者获取用户的智威汤逊访问令牌和直接从网络B.请求资源的情况下

实际上,CORS是不是安全功能可言,而是一种安全地绕过浏览器的同源策略(安全功能)的方法。同源策略(基本上每个浏览器都实现)限制网页从不同来源访问网页上的数据。

想象一下浏览器没有实现同源策略的情况。任何网页都可以从任何来源请求数据,这意味着任何恶意网站都可以向银行,电子邮件帐户或其他任何地方请求数据。这个浏览器会高兴地发送与这些源相关的任何HTTP cookie,并且所有这些请求都将被授权。对这个浏览器的攻击是微不足道的。

因此,很明显,任何浏览器都需要同源策略。但是,正如您发现的那样,网站通常在分享原始数据时非常有用。这就是创建CORS规范的原因。只要双方同意跨数据源共享数据,浏览器将允许发送请求。

要回答您的真实问题,防止攻击者直接使用JWT的方法是不允许他们首先访问它。您应该像使用HTTP会话cookie或密码一样保护JWT,因为这就是它的原因。

+0

感谢您的评论,并帮助Micheal Davis和@MattS。 目前我在Ajax中使用这个承载令牌,因此编码令牌在浏览器的开发工具中可见。 是否保护JWT会将其传递到其他地方的标题,而不是在Ajax调用中?所以,以后通过使用HTTPS,让它更难获得令牌? –