Laravel 下的伪造跨站请求保护 CSRF#
简介#
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#的更多相关文章
- laravel之伪造跨站请求保护CSRF实现机制
Laravel 提供了简单的方法使你的应用免受 跨站请求伪造 (CSRF) 的袭击.跨站请求伪造是一种恶意的攻击,它凭借已通过身份验证的用户身份来运行未经过授权的命令. Laravel 为每个活跃用户 ...
- Django中间件、csrf跨站请求、csrf装饰器、基于django中间件学习编程思想
django中间件 中间件介绍 什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出. ...
- ASP.NET MVC中防止跨站请求攻击(CSRF)
转载 http://kevintsengtw.blogspot.co.nz/2013/01/aspnet-mvc-validateantiforgerytoken.html 在 ASP.NET M ...
- Python-flask跨站请求伪造和跨站请求保护的实现
图中 Browse 是浏览器,WebServerA 是受信任网站/被攻击网站 A,WebServerB 是恶意网站/点击网站 B. (1) 一开始用户打开浏览器,访问受信任网站 A,输入用户名和密码登 ...
- asp.net MVC中防止跨站请求攻击(CSRF)的ajax用法
参考: Preventing Cross-Site Request Forgery (CSRF) AttacksValidating .NET MVC 4 anti forgery tokens in ...
- PHP安全编程:跨站请求伪造CSRF的防御(转)
跨站请求伪造(CSRF)是一种允许攻击者通过受害者发送任意HTTP请求的一类攻击方法.此处所指的受害者是一个不知情的同谋,所有的伪造请求都由他发起,而不是攻击者.这样,很你就很难确定哪些请求是属于跨站 ...
- 跨站请求伪造(CSRF 或者 XSRF)与跨站脚本(XSS)
跨站请求伪造 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 X ...
- Flask从入门到精通之跨站请求伪造保护
默认情况下,Flask-WTF 能保护所有表单免受跨站请求伪造(Cross-Site Request Forgery,CSRF)的攻击.恶意网站把请求发送到被攻击者已登录的其他网站时就会引发CSRF ...
- revel框架教程之CSRF(跨站请求伪造)保护
revel框架教程之CSRF(跨站请求伪造)保护 CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山 ...
随机推荐
- PHP--年龄转生日、生日转年龄
/** * 年龄转生日(模糊结果) * @parameter int age(年龄) * @parameter string symbol(分隔符) * @return string (yyyy*mm ...
- python统计一个文本中重复行数的方法
python统计一个文本中重复行数的方法 这篇文章主要介绍了python统计一个文本中重复行数的方法,涉及针对Python中dict对象的使用及相关本文的操作,具有一定的借鉴价值,需要的朋友可以参考下 ...
- vue+vant ui+高德地图的选址组件
首先在index.html引入高德地图的js <script src="https://webapi.amap.com/maps?v=1.4.14&key=你的key" ...
- leetcode 1-20 easy
1.Two Sum Given an array of integers, return indices of the two numbers such that they add up to a s ...
- Vue--由自动获取焦点引出的DOM、mounted、自定义指令
一.自动获取焦点的DOM实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- web前端学习常用网址记录
jetbrains下载各种软件和试用 www.jetbrains.com www.jetbrains.com/idea php服务器下载 php文档查询 php.net webAPI网站(各种教程文档 ...
- 第八章—BOM(一)
ECMAscript是JS的核心,而要在web上使用JS,那么BOM无疑是真正的核心.BOM叫浏览器对象模型,它提供了许多对象,用于访问浏览器的功能. BOM的核心对象是window,它表示浏览器的一 ...
- 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」
之前发过一系列有关 GitHub 的文章,有同学问了,GitHub 我大概了解了,Git 也差不多会使用了,但是 还是搞不清 GitHub 如何帮助我的工作,怎么提升我的工作效率? 问到点子上了,Gi ...
- 【JZOJ3640】【COCI2014】utrka
Mission 2<=N<=300,2<=M<=N∗(N−1) Solution SPFA. 由于只是二元关系,所以条件随便写. 具体来说,如果是u⇒v. 若v的最大领先时间还 ...
- FastAdmin 安装后点登录没有反应怎么办?
FastAdmin 安装后点登录没有反应怎么办? 很多小伙伴安装后点"登录"没有反应. 这个 URL 是对的,但是页面就是不改变. 如果这时候点击 URL 变了,那没有到登陆界面, ...