简介#

Laravel 可以轻松地保护应用程序免受跨站请求伪造(CSRF) 的攻击。跨站请求伪造是一种恶意的攻击,

他凭借已通过身份验证的用户身份来运行未经过授权的命令。

Laravel 会自动为每个活跃用户的会话生成一个 CSRF [令牌] 。该令牌用于验证经过身份验证的用户是向应用程序

发出请求的用户。

任何情况下当你在应用程序中定义HTML 表单时,都应该在在表单中包含一个隐藏的CSRF令牌字段,以便CSRF

保护中间件可以验证该请求,可以使用辅助函数csrf_field 来生成令牌字段:

{{csrf_field()}}

包含在web 中间件组里的 VerifyCsrfTken 中间件会自动验证请求里的令牌是否与存储在会话中令牌匹配。

CDRF令牌 & JavaScript#

构建由Javascript 驱动的应用时,可以很方便的让Javascript HTTP 函数库在发起每一个请求时自动附上 CDRF令牌。

默认情况下,resources/assets/js/bootstrap.js 文件会用 Axios HTTP 函数库注册的 csrf-token meta 标签中的值。如果你不使用这个函数库,

你需要手动为你的应用配置次行为。

CDRF 白名单#

有时候你可能希望设置一组并不需要CSRF保护的URI.例如,如果你正在使用Stripe 处理付款并使用了他们的webhook

系统,你会需要从CSRF的保护中排除Strpe Webhook 处理程序路由,因为Stripe 并不会给你的路由发送CSRF令牌。

你可以把这类路由放到 routes/web.php 外,因为RouteServiceProvider 的web 中间件适用于该文件中的所有路由。

不过,你也可以通过将这类url添加到VerifyCsrfToken 中间件中的 $except 属性来排除对这类路由的CSRF保护:

X-CSRF-TOKEN#

除了检查POST参数中的CSRF令牌外,VerifyCsrfToken 中间件还会检查x-csrf-token 请求头。你可以将令牌保存在HTML

meta标签中:

<meta name="csrf-token" content="{{csrf_token()}}">

然后你就可以使用类似jQuery的库自动将令牌添加到所有请求头信息中。这可以为基于AJAX的应用提供简单、方便得

的 CSRF 保护:

$.ajaxSetup({

  headers:{

  'X-CSRF-TOKEN':$('meta[name="csrf-token"]').attr('content')

}

});

X-XSRF-TOKEN#

Laravel将当前的CSRF令牌储存在有框架生成的每个响应中包含的一个xsrf-token cookie中。为方便起见,你可以使用

cookie 值来设置x-xsrf-token 请求头,而一些 javascript 框架和库(如Angular 和Axios)会自动将这个值添加到

x-xsrf-token头中。

Laravel 下的伪造跨站请求保护 CSRF#的更多相关文章

  1. laravel之伪造跨站请求保护CSRF实现机制

    Laravel 提供了简单的方法使你的应用免受 跨站请求伪造 (CSRF) 的袭击.跨站请求伪造是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令. Laravel 为每个活跃用户 ...

  2. Django中间件、csrf跨站请求、csrf装饰器、基于django中间件学习编程思想

    django中间件 中间件介绍 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出. ...

  3. ASP.NET MVC中防止跨站请求攻击(CSRF)

    转载   http://kevintsengtw.blogspot.co.nz/2013/01/aspnet-mvc-validateantiforgerytoken.html 在 ASP.NET M ...

  4. Python-flask跨站请求伪造和跨站请求保护的实现

    图中 Browse 是浏览器,WebServerA 是受信任网站/被攻击网站 A,WebServerB 是恶意网站/点击网站 B. (1) 一开始用户打开浏览器,访问受信任网站 A,输入用户名和密码登 ...

  5. asp.net MVC中防止跨站请求攻击(CSRF)的ajax用法

    参考: Preventing Cross-Site Request Forgery (CSRF) AttacksValidating .NET MVC 4 anti forgery tokens in ...

  6. PHP安全编程:跨站请求伪造CSRF的防御(转)

    跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法.此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者.这样,很你就很难确定哪些请求是属于跨站 ...

  7. 跨站请求伪造(CSRF 或者 XSRF)与跨站脚本(XSS)

    跨站请求伪造 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 X ...

  8. Flask从入门到精通之跨站请求伪造保护

    默认情况下,Flask-WTF 能保护所有表单免受跨站请求伪造(Cross-Site Request Forgery,CSRF)的攻击.恶意网站把请求发送到被攻击者已登录的其他网站时就会引发CSRF ...

  9. revel框架教程之CSRF(跨站请求伪造)保护

    revel框架教程之CSRF(跨站请求伪造)保护 CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山 ...

随机推荐

  1. Windows下Git的下载、安装、设置用户名和邮箱、创建版本库等

    Git官网:https://git-scm.com/ 一.Git下载 官网首页下载,当前最新版本:2.24.1 本人下载的是Git for Windows版本:Git-2.24.1.2-64-bit. ...

  2. java开发岗位面试整理

    一.Java基础 1. String类为什么是final的 2. HashMap的源码,实现原理,底层结构. 3. 说说你知道的几个Java集合类:list.set.queue.map实现类. 4. ...

  3. neo4j批量导入neo4j-import

    neo4j数据批量导入 1 neo4j基本参数 1.1 启动与关闭: 1.2 neo4j-admin的参数:控制内存 1.2.1 memrec 是查看参考内存设置 1.2.2 指定缓存–pagecac ...

  4. Vue.之.项目开发工具选用

    Vue.之.项目开发工具选用 上篇文章记录了创建项目,这篇文件记录,如何对创建的项目进行开发.这里选择一个工具:Visual Studio Code (请自行下载安装) 1. 打开VSCode工具,并 ...

  5. 【JZOJ4709】【NOIP2016提高A组模拟8.17】Matrix

    题目描述 输入 输出 样例输入 4 3 5 4 1 7 3 4 7 4 8 样例输出 59716 数据范围 解法 40%暴力即可: 60%依然暴力: 100%依次计算第一行和第一列对答案的贡献即可: ...

  6. log4j日志系统

    在项目开发中,记录错误日志是一个很有必要功能.一是方便调试:二是便于发现系统运行过程中的错误:三是存储业务数据,便于后期分析: 在java中,记录日志,有很多种方式. 比如,自己实现. 自己写类,将日 ...

  7. 【JZOJ4793】【GDOI2017模拟9.21】妮厨的愤怒

    题目描述 栋栋和标标都是厨力++的妮厨.俗话说"一机房不容二厨",他们两个都加入了某OI( )交流♂( )群,在钦定老婆的时候出现了偏差,于是闹得不可开交.可是栋栋是群内的长者,斗 ...

  8. 【JZOJ4788】【NOIP2016提高A组模拟9.17】序列

    题目描述 输入 输出 样例输入 1 5 2 1 3 0 3 2 2 0 1 0 样例输出 1 数据范围 解法 考虑没有模的情况,问题就仅仅只是简单的差分问题(广告铺设): 设r[i]是第i位需要加的次 ...

  9. 利用 JavaScript SDK 部署网页版“Facebook 登录”

    facebook开发者平台https://developers.facebook.com/ 利用 JavaScript SDK 部署网页版“Facebook 登录” 通过采用 Javascript 版 ...

  10. 阿里云文件存储CPFS正式商业化,提供云上高性能并行文件系统

    2018年3月份,阿里云推出文件存储CPFS产品.在经过近一年的上线公测后,CPFS即将迎来商业化,将为更多的客户提供云上高性能的并行文件存储. 坚如磐石的高性能计算存储 文件存储CPFS针对计算密集 ...