这段时间一个项目后端用的是laravel.在写api接口时通过Postman6进行测试.但是在测试post形式的接口时laravel自带了CSRF验证机制.这就很尴尬了...

所以我们的目的在使用Postman通過XSRF的验证,以測試POST的請求。还是以laravel为例子,Laravel会返回到浏览器的GET请求时将XSRF-TOKEN写在Cookie中.因此我们需要从Cookie中取到XSRF-TOKEN,并附在POST请求的header中传送出去.以达到绕过Laravel的CSRF验证.

安装Postman Interceptor(Chrome扩展功能)

使用Postman如果通过自己拼接url,自己造数据,是非常麻烦的。因此选择Postman+Postman interceptor,使用Postman interceptor可以拦截到网页请求,同时传到postman的history列表中,然后我们只需要在postman中修改一下url就可以直接send了。

Laravel通过chrome作为Interceptor來记录cookie,因此要先安裝postman在Chrome上的扩展程序。

下载地址: https://chrome.google.com/webstore/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo

嗯...浏览下载安装需要翻墙...

创建environment

我们打开Postman,点击页面右上角,进行设定环境.

新建evnironment

输入新建的environment名称,并按下"Add"

选择刚刚新建的environment

發送GET請求,以取得XSRF token

新建一个get请求,并在postman的test标签中加入下面代码:

pm.environment.set(
    "XSRF-TOKEN", //此為環境變數名稱
    decodeURIComponent(pm.cookies.get("XSRF-TOKEN"))

加入的这个代码会在请求服务器成功返回时执行,因此可以取得cookie,并存入postman的环境变量,用来在post请求时使用.

访问刚刚创建的get请求,点击send,检查XSRF token是否在环境变量中

POST附帶XSRF token 

Laravel预设要求post時需要HTTP header附帶XSRF token

以下是我测试的代码:

//web.php
Route::post('posttest', 'OperateController@postTest');
//OperateController.php
public function postTest(Request $request) {
    var_dump('post test');

新增POST标签,并在Header中增加XSRF token

格式是:{{"环境变量"}}:用來取得的环境变量值。

X-XSRF-TOKEN:{{XSRF-TOKEN}}

点击Send,成功打印

前言介绍这段时间一个项目后端用的是laravel.在写api接口时通过Postman6进行测试.但是在测试post形式的接口时laravel自带了CSRF验证机制.这就很尴尬了...所以我们的目的在使用Postman通過XSRF的验证,以測試POST的請求。还是以laravel为例子,Laravel会返回到浏览器的GET请求时将XSRF-TOKEN写在Cookie中.因此我们需要从Cook...
问题前因如果用户已经登录了我们的a.com网站,用户又打开了一个恶意网站 evil.com,那么evil.com可以向a.com发送http请求,比如发送ajax,并且在发送,可以通过设置ajax的属性,让这个请求带上a.com的cookie。 这样的话问题就来了,这个请求被a.com网站看来是合法的,并进行处理,但这个请求可能是伪造的并不是用户的本意如何破?方法一:对每一个http请求都加一个
向正常网站的表单中注入恶意脚本代码,窃取网站私有内容,比如窃取cookies、localstorage、sessionstorage的内容。 设置cookies为HttpOnly 使cookie不可被js读取操作。 CSRF/XSRF 跨站请求伪造 诱导用户在恶意网站内点击链接,链接请求正常网站的功能业务,会自动携带正常网站的cookies,在用户不知情的情况下完成一些操作。 健强服务端逻辑,严格restful风格,可以防御一些低端的攻击。 利用请求头中的refe
近日在学习laravel,在写登录模块用ajax-post传递数据,一直报TokenMismatchException错误,后了解需要在html代码中添加如下代码 //<head>标签中添加如下 <meta name="csrf-token" content="{{ csrf_token()}}">代码 在发起a...
2.复制authorization的值:fiQ6MK3WmjEIrFc7Lrwed/fURJ2a5Qh32cNxhRL+5ebl3QSO8QbwoyFWZ+EWKIkchd6c33A8Canjp8QysBdtAfmy0iz/nshDe9ZaUtGFRWbY5m9nVTIORVpfbs+QeZaA/BzhCus92WvYH/Sj4dgVrZ550zibW21oTvNrVeyHbc2XpTCApkL4+UtHxZbo2zn7
1、post请求原理 在使用Python中的request模块的post请求,由于网站开启了csrf跨站请求攻击,会出现403错误,因为我们在使用post候没有携带csrf数据去验证,网站会不认可我们,因此我们需要第一次的候使用get请求,然后使用re正则匹配到这个csrf-token命令,取出来这个命令,然后在使用post发送请求,在请求中的数据中添加csrf的键值对,然后就可以使用post访问到网上了,并且也可以post请求携带数据。 2、操作方式 就是先访问一次登录页,然后从登录页中查找
是的,你可以在 Postman 中使用 x-www-form-urlencoded 格式来传递参数。这种格式会将参数编码为 URL 编码格式,并且通过 HTTP 请求的消息体来传递参数。 要在 Postman 中使用 x-www-form-urlencoded 格式,你需要在请求的 Headers 中设置 Content-Type 为 application/x-www-form-urlencoded。然后,在请求的 Body 中选择 x-www-form-urlencoded 格式,然后添加参数键值对。 请注意,使用 x-www-form-urlencoded 格式传递参数,参数是以键值对的形式传递的,例如: username=johndoe&password=123456 这样的格式可以方便地传递多个参数。