关于前后端分离,后端对前端数据安全校验的疑问
问题描述:
在传统的web应用中,用户的登陆态存session,浏览器存放cookie,会存在csrf攻击的安全漏洞,所以laravel的web请求路由有csrf token值用于防范攻击。
在前后端分离的web应用中,前端与后端之间往往用token校验用户的身份,这个token也存放于浏览器的cookie值中,可这时为何不考虑token泄露问题而导致的csrf攻击? (laravel的请求路由此时是api)
我发现现在前后端项目,好像大家都不对数据进行sign签名,这是为什么?
谢谢解惑!
补充:csrf攻击,是用户在A网站登录后,访问B网站,在B网站上诱导用户再次去请求A网站的url,比如在A网站上的转账操作。而我上面说token泄露导致的csrf攻击,本意也是B网站再次诱导你去访问A网站,你是否能直接访问到转账的API,如果能,那这个安全性如何保障?如果不能访问,那则无此顾虑。谢谢
首先你要搞清楚什么是 CSRF 攻击,CSRF 是为了传统的 Session 机制,防止跨站请求。
API 接口本身就是开放的,防止跨站的意义是什么?如果 API 还要防 CSRF,那为什么不直接用 Session ?
签名校验是谁校验?谁签名?那肯定是前端签名,后端校验,那签名就可以轻易伪造,这个签名就没有意义,如果后端签名后端校验,那跟 token 也没区别。
还有就是,token 是怎么被泄露的?抛开泄露原因不谈,这就是耍流氓,在前后端分离模式下,token 一旦被泄露就意味着用户身份可以被假冒,现在都是 https 传输,除去中间人攻击外,那就是客户端的问题,就是说 token 一旦泄露,那肯定是用户自愿的。