保护oauth bearer令牌免受javascript应用程序中的XSS,CSRF等攻击

时间:2014-06-23 09:30:37

标签: security cookies oauth xss csrf

在使用纯JavaScript应用程序时,我对如何保护(或保护)承载令牌有点不清楚。

我知道当用户向服务器请求令牌时,它的有效期为14天或24小时。但是一旦用户拥有令牌,就没有简洁(保证)的方法来保护XSS或CSRF攻击(我错过了什么?)。

现在假设用户已登录到Web应用程序,并且浏览器具有此令牌,该令牌有效期为14天。如果用户正在访问另一个尝试执行XSS(或CSRF)的Web应用程序,则该令牌将暴露给第三方应用程序,并且此应用程序可以使用此令牌调用我的应用程序(?)

我试图在网上搜索,但没有具体(或易于理解的东西)出现在纯粹的js应用程序以及如何保护令牌。或者在js atm中没有一个好方法。而你只是希望(并祈祷)攻击不会在令牌的有效期内发生(即14天:|)?

欢迎任何想法或意见。

由于

编辑:可能。不言而喻,但我们假设使用SSL证书。

1 个答案:

答案 0 :(得分:0)

所以,非常快速的总结。发生CSRF是因为对HTTP端点的请求会自动包含cookie(应该如此)以及服务器描述的所需标头,并且不需要用户实际执行某些操作。他们只需访问带有CSRF矢量的网页。

如果没有使用首先传递给客户端并返回服务器以验证用户确实打算进行呼叫的唯一“秘密”,则通常认为CSRF是可能的。一般来说,Web浏览器正在塑造防止任何类型应用程序的CSRF的主要方法。 CSRF on OWASP

正如您所指出的,您使用了一个承载令牌(作为HTTP头发送) - 但您仍然受到保护,因为默认情况下请求需要来自同一个源。如果服务器允许来自HTTP标头中返回的所有来源的呼叫(告诉用户的Web浏览器是否允许),那么就在它的头上Same origin policy here

对于XSS,只要您的cookie至少具有“HTTP”标志,它们对用户访问的任何页面上的javascript代码都是不可见的。另外严格来说,XSS向量包括您网站的cookie被盗一般需要在您的网站上进行。除非用户身在您的网站上,否则我无法想到要偷他们。如果您设置“安全”标志,这甚至更好,因为它也强制“服务器”并确保仅在建立TLS / SSL连接时才发送cookie。 XSS on OWASP

以下是使用安全和HTTP标志列出的Cookie的屏幕截图: A mixture of cookies - some cookies need to be accessed by javascript though like google trackers!

作为额外的,请确保您始终强制执行TLS连接,否则他们可能成为公共WIFI网络上MITM(中间人)攻击的受害者,该网络会强制协议降级为易受SSL影响的弱版本POODLE或者根本没有。请阅读HSTS,因为它肯定会强化我提到的所有内容,并且真正有助于防止令牌被盗HSTS OWASPHSTS info wikipedia