分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

CSRF与AJAX

发布时间:2023-09-06 02:21责任编辑:蔡小小关键词:暂无标签

谨以此博客记录我今天踩的坑,AJAX的请求基本上与CSRF无缘了!!!(那为什么又有人说防csrf的方法之一是为XMLHttpRequest设置一个CSRFToken的头信息呢? )

为什么说基本上呢?有两个原因:
1.服务器配置原因,X-Requested-With: XMLHttpRequest在跨域请求中一般都会被去掉,貌似配置了的话就另说了

2.本人很菜,如果有大佬有很骚很骚的操作绕过的话另说了,同时请大佬也教教我,菊花献上!!!感谢

简单说下原因吧,其实今天花了几乎一下午的时间搞这个,其中的辛酸之后自己知道,最后才发现其实不成功的原因很简单,CSRF叫跨站点请求伪造,一般我们验证的csrf时说白了都是在跨域!

而服务器判断请求时AJAX请求还是传统请求时,一般都是根据请求头中是否有X-Requested-With: XMLHttpRequest,有该头信息就是ajax请求

而跨域的时候会自动将该头信息删除掉

所以两者相矛盾

我先尝试手动加该头信息:xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 

发现请求之前会先发送一个OPTIONS的预请求,而预请求中是不让又这个头信息的!!!
 
于是我又尝试JSONP的方式,发现不成功,开始只是觉得是因为jsonp只能发送post请求,如果后台以get请求接收应该就可以了。
这才发现我很是天(la)真(ji)
jsonp根本就不会带上该请求头。。
算了不浪费时间了。。。
 
前车之鉴,后车之师!!!!

CSRF与AJAX

原文地址:https://www.cnblogs.com/jinqi520/p/9924615.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved