- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
5年前关闭。
Improve this question
我正在为基于浏览器的 Javascript Web 应用程序构建基于 JWT(JSON Web token )的身份验证机制,使用无状态服务器(没有用户 session !),我想一劳永逸地知道,如果使用存储我在 cookie 中的 JWT token 将保护我的 token 免受 XSS 攻击,或者如果没有保护,那么在我的 Javascript 应用程序中使用浏览器本地存储没有真正的优势。
我在 SO 和许多博客中看到过这个问题的提问和回答,但我从未见过真正让我满意的答案。
这个问题最初是在征求意见的基础上提出的 - 考虑到我原来的措辞,这是正确的。所以让我在这里和现在清楚地表明,我不想要基于开发人员懒惰等模糊概念的意见 - 这就是基本规则旨在消除的。我想要的是一个有证据支持的是/否答案。任何一个:
It's easier to deal with XSS than XSRF Cookies have this feature thatallows setting an HttpOnly flag from server side so they can only beaccessed on the server and not from JavaScript. This is useful becauseit protects the content of that cookie to be accessed by injectedclient-side code (XSS). Since tokens are stored in local/sessionstorage or a client side cookie, they are open to an XSS attackgetting the attacker access to the token. This is a valid concern, andfor that reason you should keep your tokens expiration low.
But if youthink about the attack surface on cookies, one of the main ones isXSRF. The reality is that XSRF is one of the most misunderstoodattacks, and the average developer, might not even understand therisk, so lots of applications lack anti-XSRF mechanism. However,everybody understands what injection is. Put simply, if you allowinput on your website and then render that without escaping it, youare open to XSS. So based on our experience, it is easier to protectagainst XSS than protecting against XSRF. Adding to that, anti-XSRF isnot built-in on every web framework. XSS on the other hand is easy toprevent by using the escape syntax available by default on mosttemplate engines.https://auth0.com/blog/2014/01/27/ten-things-you-should-know-about-tokens-and-cookies#xss-xsrf
Stormpath recommends that you store your JWT in cookies for webapplications, because of the additional security they provide, and thesimplicity of protecting against CSRF with modern web frameworks.HTML5 Web Storage is vulnerable to XSS, has a larger attack surfacearea, and can impact all application users on a successful attack.https://stormpath.com/blog/where-to-store-your-jwts-cookies-vs-html5-web-storage/
I see a lot of discussions where cookies are pitted against accesstokens. While we’ve all been burned by systems that store a session IDin a cookie, and that cookie is not secured and thus gets stolen. Thatsucks, but its not a reason to use tokens. Its a reason to avoidnon-secure, non-https cookies.https://stormpath.com/blog/token-auth-spa/
最佳答案
放弃所有希望,除非你能抵御 XSS!
或者
根据其他标准选择适合您的方法,因为两者同样安全,同样不安全。
如果您使用 cookie,您绝对应该使用双重提交 cookie 防御或类似的东西,因为它确实可以在没有 XSS 的情况下保护您免受 CSRF 的侵害。也就是说,如果你不这样做,你肯定会受到 CSRF 攻击——来自其他域——甚至不需要 XSS 漏洞利用的工作。
但无论哪种方式,您的源代码都是公开可用的(浏览器中的 JavaScript),因此对于有动力的黑客来说,查找从本地存储中提取哪个 token 和读取您的 XSRF-TOKEN cookie 之间的努力没有显着差异。如果 Evil Corp 可以让一些 JavaScript 在您的域中运行——那就是 XSS——那么你就完蛋了。
您可能需要考虑的非安全相关标准供您选择:
关于javascript - cookie 是否可以保护 token 免受 XSS 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36980058/
我有一个 if 语句,如下所示 if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
然而,在 PHP 中,可以: only appears if $foo is true. only appears if $foo is false. 在 Javascript 中,能否在一个脚
XML有很多好处。它既是机器可读的,也是人类可读的,它具有标准化的格式,并且用途广泛。 它也有一些缺点。它是冗长的,不是传输大量数据的非常有效的方法。 XML最有用的方面之一是模式语言。使用模式,您可
由于长期使用 SQL2000,我并没有真正深入了解公用表表达式。 我给出的答案here (#4025380)和 here (#4018793)违背了潮流,因为他们没有使用 CTE。 我很欣赏它们对于递
我有一个应用程序: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
我的代码如下。可能我以类似的方式多次使用它,即简单地说,我正在以这种方式管理 session 和事务: List users= null; try{ sess
在开发J2EE Web应用程序时,我通常会按以下方式组织我的包结构 com.jameselsey.. 控制器-控制器/操作转到此处 服务-事务服务类,由控制器调用 域-应用程序使用的我的域类/对象 D
这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档: Copying takes place as if an intermediate buffer were us
路径压缩涉及将根指定为路径上每个节点的新父节点——这可能会降低根的等级,并可能降低路径上所有节点的等级。有办法解决这个问题吗?有必要处理这个吗?或者,也许可以将等级视为树高的上限而不是确切的高度? 谢
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。当函数调用另一个函数时,我
有没有办法让 valgrind 使用多个处理器? 我正在使用 valgrind 的 callgrind 进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在 valgrind/callgrind
假设我们要使用 ReaderT [(a,b)]超过 Maybe monad,然后我们想在列表中进行查找。 现在,一个简单且不常见的方法是: 第一种可能性 find a = ReaderT (looku
我的代码似乎有问题。我需要说的是: if ( $('html').attr('lang').val() == 'fr-FR' ) { // do this } else { // do
根据this文章(2018 年 4 月)AKS 在可用性集中运行时能够跨故障域智能放置 Pod,但尚不考虑更新域。很快就会使用更新域将 Pod 放入 AKS 中吗? 最佳答案 当您设置集群时,它已经自
course | section | type comart2 : bsit201 : lec comart2 :
我正在开发自己的 SDK,而这又依赖于某些第 3 方 SDK。例如 - OkHttp。 我应该将 OkHttp 添加到我的 build.gradle 中,还是让我的 SDK 用户包含它?在这种情况下,
随着 Rust 越来越充实,我对它的兴趣开始激起。我喜欢它支持代数数据类型,尤其是那些匹配的事实,但是对其他功能习语有什么想法吗? 例如标准库中是否有标准过滤器/映射/归约函数的集合,更重要的是,您能
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我一直在研究 PHP 中的对象。我见过的所有示例甚至在它们自己的对象上都使用了对象构造函数。 PHP 会强制您这样做吗?如果是,为什么? 例如: firstname = $firstname;
...比关联数组? 关联数组会占用更多内存吗? $arr = array(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- index is 11; does the
我是一名优秀的程序员,十分优秀!