前后端分离,前端如何保障cookie不被篡改?
来源:8-1 create-api 原理介绍

他门说这就是人生
2020-02-03
拿登录举例,以前前后端在一个项目里时,登录成功后,由后端设置cookie,保存当前登录用户,并且是httpOnly的cookie。这样,浏览器端是无法修改这个cookie值的,防止了登录成功后篡改当前登录用户。但是前后端分离后,登录成功后,由于后端和前端跨域,后端就无法设置cookie到浏览器端,只能返回给前端登录成功的json,此时由前端来设置cookie,保存当前登录用户。此时如何保障cookie不被篡改呢?例如,用户直接在浏览器控制台写js来修改cookie中的当前登录用户。
写回答
1回答
-
只要是前端存储,无论是保存在 cookie 还是在 localstorage,都没法保证不被篡改和盗取(一旦被 xss)。
前后端分离只是物理上开发方式的分离,但是部署还是可以把页面部署到 server 的,保证页面还是放在主域名下,这样就不会有跨域问题,通过登录还是可以把 cookie 种在主域名下的。
如果某个服务接口和页面确实有跨域问题,那么可以先通过向登录的主域发送一个请求获取一个登录相关 token(如果这个页面是后端渲染,可以在渲染页面的时候生成这个 token),再携带这个 token 请求这个服务接口。
另外,即使是前端保存登录的数据,你要确保的也只是页面不被 xss,而不用管 “用户直接在浏览器控制台写js来修改cookie中的当前登录用户”,这种没有风险。012020-02-03
相似问题