CSRF与AJAX

谨以此博客记录我今天踩的坑,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根本就不会带上该请求头。。

算了不浪费时间了。。。

前车之鉴,后车之师!!!!

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

时间: 2024-10-18 17:59:29

CSRF与AJAX的相关文章

Preventing CSRF With Ajax

https://stackoverflow.com/a/24394578/3782855 You don't need the ValidationHttpRequestWrapper solution since MVC 4. According to this link. Put the token in the headers. Create a filter. Put the attribute on your method. Here is my solution: var token

Csrf 及ajax的csrf 请求

#!/usr/bin/python # -*- coding: UTF-8 -*- #验证码 import tornado.ioloop import tornado.web class CrsfHandler(tornado.web.RequestHandler): def get(self, *args, **kwargs): self.render("crsf.html") def post(self, *args, **kwargs): self.write("csr

CSRF之Ajax请求

A:Ajax提交数据是,携带的CSRF在data中: <form method="POST" action="/csrf.html"> {% csrf_token %} <input id="user" type="text" name="user" /> <input type="submit" value="提交"/> <

从零开始学CSRF

为什么要拿CSRF来当"攻击手法系列"的开头篇呢?因为CSRF/XSRF我个人喜爱他的程度已经超过XSS了.如果说XSS是一个老虎,那么CSRF就是隐藏在暗处的蛇. 相信现在很多人不明白CSRF是怎么运作,他和XSS的不同是在哪里.我这里就逐步为大家解释,并从浅入深的介绍CSRF. 入门 我们先来看看CSRF和XSS的工作原理,先让大家把这两个分开来. XSS: 攻击者发现XSS漏洞--构造代码--发送给受害人--受害人打开--攻击者获取受害人的cookie--完成攻击 CSRF: 攻

Django进阶之CSRF

简介 django为用户实现防止跨站请求伪造的功能,通过中间件 django.middleware.csrf.CsrfViewMiddleware 来完成.而对于django中设置防跨站请求伪造功能有分为全局和局部. 全局: 中间件 django.middleware.csrf.CsrfViewMiddleware 局部: @csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便settings中没有设置全局中间件. @csrf_exempt,取消当前函数防跨站请求伪造功能,即便s

Django中的CSRF

CSRF(Cross Site Request Forgery, 跨站域请求伪造) CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御.然而,对于大多数人来说,CSRF 却依然是一个陌生的概念.即便是大名鼎鼎的 Gmail, 在 2007 年底也存在着 C

DedeCMS Xss+Csrf Getshell \dede\file_manage_control.php

目录 1. 漏洞描述 2. 漏洞触发条件 3. 漏洞影响范围 4. 漏洞代码分析 5. 防御方法 6. 攻防思考 1. 漏洞描述 对这个漏洞的利用方式进行简单的概括 1. 这个漏洞的利用前提是需要登录到后台进行操作,准确来说是从cookies的角度来说是需要处于登录的后台状态 2. 后台的Logo上传存在xss漏洞,黑客可以在img的src中注入xss的代码 3. 黑客可以利用xss未过滤漏洞,发起CSRF攻击,劫持目标用户向"/dede/file_manage_control.php"

CSRF(跨站点请求伪造)

引起原因:个人认为 csrf 在 Ajax 盛行的今天来说,倒是方便了,因为它可以在你不知道的情况用你的通过验证用户进行操作,所以也被称为浏览器劫持.如果你已通过某个网站的验证那么你将以你的角色对网站进行操作,比如你是管理员可以添加其它的用户到管理组,但是如果有人构造了添加管理员的链接被管理员点后也会执行相应操作. 解决方法: 修改信息时添加验证码或添加 Session 令牌(ASP.NET中已经提供一个自动防范的方法,就是用页面属性 ViewStateUserKey.在Page_Init方法中

3. 从零开始学CSRF

为什么要拿CSRF来当"攻击手法系列"的开头篇呢?因为CSRF/XSRF我个人喜爱他的程度已经超过XSS了.如果说XSS是一个老虎,那么CSRF就是隐藏在暗处的蛇.?????? ??相信现在很多人不明白CSRF是怎么运作,他和XSS的不同是在哪里.我这里就逐步为大家解释,并从浅入深的介绍CSRF.?? ??入门?????? ??我们先来看看CSRF和XSS的工作原理,先让大家把这两个分开来.?????????? ??XSS:?? 攻击者发现XSS漏洞--构造代码--发送给受害人--受害