一、CSRF攻击
1、什么是CSRF 攻击?
CSRF是跨站请求伪装(Cross-site request forgery)的英文缩写: Laravel框架中避免CSRF攻击很简单:Laravel自动为每个用户Session生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如不是则请求失败。(原理和验证码是一致的。) Laravel提供了一个全局帮助函数csrf_token来获取Token值,因此只需在视图提交表单中添加如下HTML代码即可在请求中带上Token:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
2、Laravel中如何避免CSRF攻击
案例:通过案例实现csrf的机制验证
1、创建两个路由,一个用于展示表单(get),另外处理请求(post)
/showtable
展示表单 get
/posttable
提交表单 post
效果:
说明Laravel框架默认是开启了csrf认证的。
修改showtable.blade.php
里的代码如下:
说明这个token验证是成功了,所以跨站的没办法验证通过,只能在当前站点访问。
除了csrf_token()
还有一种方法csrf_field()
,前者表示直接输出token值,后者表示直接输出整个隐藏域的input框;
如下:
一般在视图里用csrf_field即可,大部分的时候在javascript代码片段中(特别是在做ajax异步提交的时候)可以考虑用csrf_token。
3、从CSRF验证中排除例外路由
并不是所有请求都需要避免CSRF攻击,比如去第三方API获取数据的请求。
可以通过VerifyCsrfToken(app/Http/Middleware/VerifyCsrfToken.php)
中间件将要排除的请求URL添加到$except属性数组中:
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!