首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安全- CSRF预防没有XSS预防无用吗?

安全- CSRF预防没有XSS预防无用吗?
EN

Stack Overflow用户
提问于 2019-08-16 01:37:47
回答 1查看 895关注 0票数 2

我正在AWS上开发一个无服务器应用程序,并使用Svelte.js和Sapper开发一个静态前端。对于用户管理,我使用AWS认知用户池。认知在执行auth操作时返回JWT令牌,因此这自然会导致在何处存储这些令牌的客户端的异常问题。

我读过使用localStorage vs cookie的各种利弊,以及第一个选项如何打开XSS漏洞,而第二个选项易受CSRF攻击。我知道恶意脚本可以很容易地访问localStorage,并且在那里存储诸如JWT这样的敏感信息是有风险的。我还理解使用HttpOnly可以阻止javascript对cookie的访问,因此它们应该对XSS攻击更加敏感。

但在阅读“OWASP预防CSRF指南”时,我发现了一个有趣的说法:

但是,任何跨站点脚本漏洞都可以用来击败当今市场上可用的所有CSRF缓解技术(除了涉及用户交互的缓解技术,并在本备忘表后面进行了描述).必须不存在任何XSS漏洞,以确保CSRF防御系统无法规避。

然而,同一指南中还有另一条声明指出:

请注意,令牌本身可以减轻CSRF。

这让我很困惑。到底是哪一个?除了用户交互之外,所有CSRF预防技术都是易受攻击的,还是基于令牌的技术是可以接受的?

如果它们是无效的,而且由于CSRF预防依赖于XSS预防,这难道不意味着在cookies中存储JWT比在localStorage中存储JWT几乎没有什么安全可言吗?如果我的应用程序中存在XSS漏洞,这不意味着我设置的任何CSRF防御实际上都是无用的吗?

如果是这样的话,那么当我一开始就需要防止XSS的时候,为什么还要经历处理cookie和CSRF预防的麻烦呢?

有人能帮我澄清一下这个问题吗?是否有一种方法可以正确地使用JWT而不暴露XSS攻击?基于令牌的技术(如同步器模式或加密模式)真的有效吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-10-31 22:26:00

我也试图了解Sapper应用程序的最佳安全实践。我在这里找到了一些关于使用标题的东西:https://github.com/sveltejs/sapper/issues/880

更广泛地说:https://security.stackexchange.com/questions/177155/can-jwt-authentication-act-as-an-anti-csrf-mechanism

CSRF的更全面的一般分解:https://github.com/pillarjs/understanding-csrf

和一些更高级的概念链接在这里,通过盖茨比的讨论:https://github.com/gatsbyjs/gatsby/issues/14741

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57517989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档