有没有网安大佬能讲解一下 CSRF 攻击,这是不是一种“不存在”的攻击?

2021 年 2 月 1 日
 Richard14
小白最近在学习登录系统的网络安全知识,一个摆在眼前的问题就是,倒是是用有状态登录验证还是无状态登录验证。如果使用无状态的话,好处是业务节点可以随意扩展,听起来似乎是银弹。但弊端也很明显,就是应对各种攻击还没有比较成熟的方案,比如 XSS 和 CSRF 。

根据我这两天搜索到的知识,登录凭证一般有两种储存的地方,一种是 cookie,一种是 sessionStorage 等,前者可以通过设置禁止 js 访问,相当于完全禁绝 xss 攻击,但同时却无法防范 csrf 攻击,而后者则有被 xss 读取的风险。

那么意味着,一种合理的处理方案是,使用 cookies 储存凭证,同时进行 csrf 防御。然而搜索了一下 csrf 防御方法,除了基本的验证 Referer 以外,似乎比较主流的方法就是在 post 方法中添加自定义参数,让恶意用户无法构造出一个合法请求,也就防范 csrf 了。

然而我看这些文章的时候想说,即使用 csrf token 的方式,与 JWT 相同的,它仍需要将凭证储存在前端中,那就意味着如果网站出现 xss 漏洞,它还是会被攻破。所以理论上无论禁不禁止 js 访问 cookies,网页都会面临 xss 漏洞的威胁,那么似乎只要保证开发安全,就必须以无 xss 漏洞为前提,似乎 csrf 是一个完全没必要的讨论了?

有没有网安大佬讲一下我理解的对不对。另外关于 xss,是不是现在用前端开发框架基本不用考虑 xss 的问题,比如 vue,只要我不使用 v-html,应该是免疫的吧?
628 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/750240

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX