CSRF防御时,token一般放在Session中还是Cookie中?
CSRF防御,一般会由服务器生成一个随机的token,这个token会在页面form表单提交时一起提交给服务器,以此来判断是否请求是CSRF请求。那么,这个token一般放在Session还是Cookie中,还是都行?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
一种是SF形式,一份放在session中,另一份放表单域,提交的时候验证是否一致。
另外一种是CF形式,Cookie和表单,Cookie必须加 HTTPOnly。不能被浏览器读到的Cookie,其作用跟放在 Session里的数据一样。
Session中,Cookie可以伪造
都不行,只能放到
form
的一个隐藏中控件中。放在前端不管放哪都可以伪造,token不就是为了权限控制和防止数据伪造吗,所以放前端哪里都一样
放在form的隐藏域或者具有http_only属性的cookie字段中也是可以的,session中有点浪费服务器资源
敏感的接口需要增加token校验,发生操作的请求前先获取安全加密token,然后请求接口带上token,后端接口需要判断token的时效性和加密规则判断
CSRF 跨站请求伪造。通常,这种方式攻击,攻击者并不能获取用户的cookie。而是利用用户cookie访问目标网站。指直接利用cookie,而非盗取cookie
csrftoken防御一种方式是可以存放在cookie中。
攻击者伪造1个post,骗取用户点击,action是目标网站,但并没有csrftoken,目标网站的验证就不能通过,就不能处理post请求。
正常请求,cookie除了sessionid还有csrftoken,和网站csrftoken匹配。