关键词:
关于前端发起请求
问题一 JS发起请求的方式
方法一
JS代码中发起请求的方式普遍为AJAX
该技术在 1998 年前后得到了应用。允许客户端脚本发送HTTP请求(XMLHTTP)
方法二
script标签请求
方法三
通过HTML的方法
通过js自动在jsp中创建一个form表单,并给其method属性为post
function post(URL, PARAMS)
var temp = document.createElement("form");
temp.action = URL;
temp.method = "post";
temp.style.display = "none";
for (var x in PARAMS)
var opt = document.createElement("textarea");
opt.name = x;
opt.value = PARAMS[x];
temp.appendChild(opt);
document.body.appendChild(temp);
temp.submit();
return temp;
$(".submit_d a").click(function()
var data = ($(this).attr("class")).split("-");
var series = data[0];
var discharge = data[1];
var carriageNum = data[2];
var seatNum = data[3];
var gear = data[4];
var cost = data[5];
var pictureUrl = data[6];
var id = data[7];
post(ctx+"/order/rentcar.action","series":series,"discharge":discharge,"carriageNum":carriageNum,"seatNum":seatNum,"gear":gear,"cost":cost,"pictureUrl":pictureUrl,"id":id);
);
问题二 设置header、cookie
CSRF发起的请求可以设置cookie(token)、header么
CSRF或者jsonp,利用时需要跨域。
跨域首先排除掉AJAX方法
AJAX如何跨域
- CORS
简单来说,请求时浏览器检测到跨域,会带上Origin,得到服务器的准许后才能够获取数据。
CORS不仅设置了AJAX跨域时的域名,还有请求方法、返回Header获取字段、允许发送cookie等
浏览器同源政策及其规避方法(阮一峰)
CORS需要大多数情况下,前端是无感知的,这是后端服务器做的部分。 - JSONP
JSONP能够跨域的原因在于 标签允许跨域。
通过script拿到数据,形如
将会返回 foo(data)打在前端
前端再定义function foo(),返回前端时就直接调用并传入数据。
缺点:
限于GET方法
一样无法自定义设置header和cookie。 - 代理
本地设置代理,ajax请求本地代理,再由本地通过非ajax方法去请求数据,返回给前端。不考虑。但是在某些情况下可以用,比如payload中需要拼接由跨域获取的数据。
这三种方法都是JS/AJAX跨域的方法。
在CSRF/JSONP劫持的运用上,CORS跨域被限制的情况下不存在了,因此AJAX的GET/POST一堆灵活操作没法用。
JSONP也无法设置header、cookie等。
FORM表单请求的方式当然也没法设置header。
结论 CSRF/JSONP劫持中所用请求难以自定义header、cookie
前后端分离,解决跨域问题及django的csrf跨站请求保护(代码片段)
1.前后端分离解决跨域问题解决跨域调用服务并设置headers主要的解决方法需要通过服务器端设置响应头、正确响应options请求,正确设置JavaScript端需要设置的headers信息方能实现;关于跨域,前端会先发送OPTIONS请求,进行预检,... 查看详情
从内存层次浅谈动态与静态
...域,以调用静态的属性、方法当创建第一个类对象时,类代码由硬盘加载到内存时,静态内容加载一次,开辟区域存放,之后每次创建对象时不再加载。每个对象默认有指针指向这片 查看详情
分享一个jsonp劫持造成的新浪某社区csrf蠕虫
...章,之后这篇文章也会拿出来分享。因为新浪已经修复了问题,所以我先把这个漏洞分享出来。以下是当时写的部分文章。0x01引子听说新浪五月送衣服,我其实也没太多空去挖洞。本来想交一个两年前挖的CSRF刷粉,结果拿出来... 查看详情
djangocsrf说明与配置(代码片段)
...ET九、在HTTP头部添加自定义属性十、DjangoForm表单和Ajaxcsrf设置十一、Djangocsrf全局生效与局部生效十二、定义不需要CSRF防跨站请求的方法一、CSRF是什么CSRF全称(Cros 查看详情
Django:禁止(未设置 CSRF cookie。)
】Django:禁止(未设置CSRFcookie。)【英文标题】:Django:Forbidden(CSRFcookienotset.)【发布时间】:2016-11-2612:47:50【问题描述】:我遇到了“未设置CSRFcookie”的问题。我所需要的只是外部计费平台将更新发送到django服务器。在本地它... 查看详情
学习备忘录(代码片段)
... 接触到的解决跨域的方法JSONP,CORSCORS 在服务器端设置 Access-Control-Allow-Origin:*1header(‘Access-Control-Allow-Origin:*‘);//所有访问23header(‘Access-Control-Allow-Origin:http://www.study.com‘);//特定网站JSONP 本质是利用HTML中的<scirpt&g... 查看详情
14.header组件静态搭建+jsonp(代码片段)
Header组件这里的标题下的图案实现为关键,实现如下:/components/header/index.jsx文件内容如下: /*头部导航组件*/importReact,Componentfrom"react";import\'./index.css\'exportdefaultclassHeaderextendsComponentrender()return(<divclassName="header"><divclassN... 查看详情
CSRF 跨域
...RESTAPI后端目前使用基于cookie的CSRF保护。基本过程是后端设置一个可由客户端应用程序读取的cookie,然后在随后的HXR请求(我的CORS设置允许的)上,一个自定义标头与cookie一起传递,服务器检查两个值匹配。基本上,这一切都是... 查看详情
web前端安全之利用flash进行csrf攻击(代码片段)
...g属性,其中AllowScriptAccess控制Flash与HTML页面的通信,如果设置不恰当会导致XSS;而AllowNetworking控制Flash与外部网络的通信,如果设置不当会导致CSRF。CSRF的中文名称是“ 查看详情
JSONP 注入脚本未调用回调
...:我正在尝试从RestApi获取数据:我尝试了以下操作:varheaders:Headers=newHeaders(\'dataType\':\'jsonp\');letoptions=newRequestOptions(headers:headers); 查看详情
怎么解决跨域问题
...只能适用于主域相同子域不同的情况; document.domain的设置是有限制的,我们只能把document 查看详情
对 CSRF 保护策略感到困惑
...该在每个会话或每个请求中更改吗?客户端或服务器应该设置csrf令 查看详情
Laravel:CSRF 令牌与 X-XSRF-TOKEN 不匹配 [重复]
...法让它在标头X-XSRF-TOKEN的ajax请求中工作?$.ajax(type:"POST",headers:\'X-XSRF-TOKEN\':token,url:\'/edit 查看详情
CodeIgniter 的 CSRF 令牌问题
...已确保使用form_open启动表单,在配置文件中将csrf_protection设置为true,并且我还确保隐藏的csrf名称和值字段与csrfcookie匹配,如下所示:http://d 查看详情
前端请求接口出现的跨域问题(代码片段)
1.针对跨域问题可以使用jsonp的方式解决2.可以使用header头来定义header(‘Access-Control-Allow-origin:*‘);header(‘Access-Control-Allow-Credentials:true‘);header(‘Access-Control-Allow-Methods:GET,POST,PUT,DELETE,OPTIONS‘);header( 查看详情
Access-Control-Allow-Headers 不允许请求头字段 X-CSRF-TOKEN
】Access-Control-Allow-Headers不允许请求头字段X-CSRF-TOKEN【英文标题】:RequestheaderfieldX-CSRF-TOKENisnotallowedbyAccess-Control-Allow-Headers【发布时间】:2018-12-1409:28:21【问题描述】:我正在使用vue和axios向embed.rock发出get请求。axios(method:\'get\',ur... 查看详情
带有 HttpHeaders 的 Angular 5 JSONP 请求
】带有HttpHeaders的Angular5JSONP请求【英文标题】:Angular5JSONPrequestwithHttpHeaders【发布时间】:2018-07-0905:27:47【问题描述】:我正在尝试使用一些HTTP标头参数执行JSONP请求。http.get很简单:letheader=newHttpHeaders();header.append(<header_param_n... 查看详情
Laravel CSRF 保护与 REST API
...LaravelCSRFprotectionwithRESTAPI【发布时间】:2016-09-0503:12:10【问题描述】:我的路由文件顶部有这段代码Route::when(\'*\',\'csrf\',array(\'post\',\'put\',\'delete\'));当我测试我的RESTfulAPI层时,我得到了令牌不匹配错误。如何解决这个问题?我对... 查看详情