黑马lavarel教程---4、csrf验证及相关

一、总结

一句话总结:

csrf验证就像短信验证码那样验证用户身份,这个验证是为了验证是本站的操作,用的是一个token字符串,外站如果有了这个token字符串,也是可以请求的

1、Laravel框架中避免CSRF攻击原理?

Laravel框架中避免CSRF攻击很简单:Laravel自动为【每个用户Session】生成了一个CSRF Token,该Token可用于验证登录用户和发起请求者是否是同一人,如果不是则请求失败。【该原理和验证码的原理是一致】

2、Csrf_token和Csrf_field的区别?

Csrf_token只是输出token的值,Csrf_field输出了一个整个的input隐藏域

3、如何查看csrf_token值?

全局帮助函数csrf_token来获取该Token值
Laravel提供了一个全局帮助函数csrf_token来获取该Token值,因此只需在视图提交表单中添加如下HTML代码即可在请求中带上Token:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

4、{{csrf_token}}和{{csrf_field}}如何选择?

异步ajax的时候必须Csrf_token,表单的时候推荐Csrf_field,省事

5、外部网站怎么能在有csrf验证的情况下进行csrf攻击?

将用户对应的token值放在input隐藏域里面,请求地址还是比较好获取的
<input type="hidden" name="_token" value="U34XbEpI81k9b9FLgHZiVZUQWkbjcbbp6Z4SQUbwP">

6、从CSRF验证中排除例外路由:并不是所有请求都需要避免CSRF攻击,比如去第三方API获取数据的请求?

可以通过在VerifyCsrfToken(app/Http/Middleware/VerifyCsrfToken.php)中间件中将要排除的请求URL添加到$except属性数组中
protected $except=[
//该处写需排除csrf验证的路由
'home/test/test7',
'home/test/test'
];

二、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的机制验证

①创建两个路由,一个用于展示表单(get),另外处理请求(post)

②创建需要的方法

③创建需要的简易表单

效果:

④提交效果(报错页面)

结论:通过刚才的案例,说明在laravel中csrf验证机制默认是开启的。

⑤解决报错问题(如何通过csrf验证)

解决思路:带上csrf需要token值,随着请求传递给后续的方法

针对csrf_token方法的简化:{{csrf_field()}}

具体的表现形式:

两者的区别:

Csrf_token只是输出token的值

Csrf_field输出了一个整个的input隐藏域

在后期使用的时候怎么选择:大部分情况下可以自己根据情况选择。但是有一个情况下开发者是没有选择权限的,必须需要使用csrf_token的,这个情况就是使用异步提交表单的方式。

3、从CSRF验证中排除例外路由

并不是所有请求都需要避免CSRF攻击,比如去第三方API获取数据的请求。

可以通过在VerifyCsrfToken(app/Http/Middleware/VerifyCsrfToken.php)中间件中将要排除的请求URL添加到$except属性数组中:

通过编写配置设置例外:

单个路由排除写法

多个元素之间通过“,”分割,遵循数组写法。

如果需要排除全部路由使用csrf的话,则可以写成:

 

黑马lavarel教程---4、csrf验证及相关的更多相关文章

  1. 黑马lavarel教程---6、简单验证

    黑马lavarel教程---6.简单验证 一.总结 一句话总结: 1.验证的最简单实例:$request的validate方法,验证通过可以继续进行,验证失败就重定向 2.中文提示可以用中文语言包 3 ...

  2. 黑马lavarel教程---9、缓存操作

    黑马lavarel教程---9.缓存操作 一.总结 一句话总结: legend2项目中自己写的哪些文件操作都可以通过这里的缓存实现,简单方便 1.lavarel中如何使用后端主流的缓存如 Memcac ...

  3. 黑马lavarel教程---12、lavarel验证码

    黑马lavarel教程---12.lavarel验证码 一.总结 一句话总结: 用插件的时候仔细看插件的版本要求 1.lavarel安装验证码插件的时候,如果(可选)需要定义自己的配置,则需要生成配置 ...

  4. 黑马lavarel教程---10、lavarel模型关联

    黑马lavarel教程---10.lavarel模型关联 一.总结 一句话总结: 1.模型关联比较方便,一次定义,后面都可以使用 2.关联关系 使用动态属性进行调用 1.一对多,多对多实例? 一对多: ...

  5. 黑马lavarel教程---7、文件上传

    黑马lavarel教程---7.文件上传 一.总结 一句话总结: 在laravel里面实现文件的上传是很简单的,压根不用引入第三方的类库,作者把上传作为一个简单的http请求看待的. 1.在lavar ...

  6. 黑马lavarel教程---13、分页

    黑马lavarel教程---13.分页 一.总结 一句话总结: - lavarel里面的分页操作和tp里面的分页操作几乎是一模一样的 - 控制器:$data=Lesson::paginate(2); ...

  7. 黑马lavarel教程---11、响应处理

    黑马lavarel教程---11.响应处理 一.总结 一句话总结: 如果在昂扬状态,看学习视频和运动时间重合,会很舒服 1.jquery的$.post参数为什么不需要占位? 因为每个参数的类型不同,可 ...

  8. 黑马lavarel教程---5、模型操作(AR模式)

    黑马lavarel教程---5.模型操作(AR模式) 一.总结 一句话总结: AR: ActiveRecord :Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型 ...

  9. 黑马lavarel教程---8、session

    黑马lavarel教程---8.session 一.总结 一句话总结: 1.session默认保存在文件中 2.使用的话通过Session门面或者辅助函数 1.lavarel中session的保存方式 ...

随机推荐

  1. python cv2截取不规则区域图片

    知识掌握 cv2.threshold()函数: 设置固定级别的阈值应用于多通道矩阵,将灰度图像变换二值图像,或去除指定级别的噪声,或过滤掉过小或者过大的像素点. Python: cv2.thresho ...

  2. P1:天文数据获取

    Step1:在sloan的casjob里http://casjobs.sdss.org/CasJobs/,密码用户 jiangbin  123456 查询满足条件的光谱对象,得到光谱对象的plate, ...

  3. 多线程的些许理解(平台x86,具体考虑linux,windows)

    多线程的些许理解 一.体系架构 1.原子操作 1) 定义 不可中断的一个或者一系列操作,也就是不会被线程调度机制打断的操作,在运行期间不会有任何的上下文切换(context switch). 2) 我 ...

  4. 白盒测试之JUnit与SpringTest的完美结合

    通过白盒的单元测试可以验证程序基本功能的有效性,从而保证整个系统的质量,功在一时,利在千秋.目前80%以上公司后台还是基于java,尤其是后台大量采用Spring框架,我们这里采用Junit和Spri ...

  5. ecshop新建增加独立页面的方法

    ecshop是通过php文件来指向dwt文件的,比如index.php是程序文件,那么其模板文件就是index.dwt 那么如果新建一个php文件来单独做其他作用呢?其实很简单 第一步: 将index ...

  6. 搭建hadoop单机版

    一.准备工作 1.申请机器 1)修改配置: 申请虚拟机下来了,通过xshell连接进入, 主机名还是默认的,修改下,不然看着不习惯 >hostname 查看主机名 >vim /etc/sy ...

  7. python出现Non-ASCII character '\xe6' in file statistics.py on line 19, but no encoding declared错误

    可按照错误建议网址查看http://www.python.org/peps/pep-0263.html 发现是因为Python在默认状态下不支持源文件中的编码所致.解决方案有如下三种: 一.在文件头部 ...

  8. Java Arrays.asList注意事项

    https://blog.csdn.net/kusedexingfu/article/details/77824189

  9. BZOJ1257 [CQOI2007]余数之和[规律]

    被zcr和yy轮流嘲讽了一番,感觉自己智商日渐下降...\TヘTツ 先拆mod变成整数除法,然后就是$nk- \Sigma_{i=1}^{n} i * \lfloor \frac{k}{i} \rfl ...

  10. Axure案例:用中继器实现便捷好用的3级菜单--转载

    提示1:本篇教程可能不太适合新手,以及不了解中继器.全局变量.系统变量等使用的…新手 提示2:文字其实不多,截图太多,所以看上去很长,也可直接翻到末尾查看所有的用例,其实并不多 之前有介绍过使用中继器 ...