黑马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. 112、如何使用stack (Swarm19)

    参考https://www.cnblogs.com/CloudMan6/p/8135714.html   定义好了 stack YAML 文件,就可以通过 docker stack deploy 命令 ...

  2. postMessage解决iframe跨域问题

    转:https://juejin.im/post/5b8359f351882542ba1dcc31 https://juejin.im/post/590c3983ac502e006531df11 ht ...

  3. docker使用国内镜像加速

    在daemon.json文件里以下国内镜像 { "registry-mirrors": [ "https://registry.docker-cn.com", ...

  4. 使用 java 创建你的第一个区块链(第二部分)

    本系列教程的目的是帮助您了解如何开发区块链技术. 在这第二个教程中,我们将: 创建一个简单的钱包: 使用我们的区块链发送已签名的交易: 感觉更酷. 以上这些将使我们拥有自己的加密货币! 从上一个教程开 ...

  5. dubbo-admin监控搭建2.6.0版本

    首先介绍一下dubbo的一个比较大的改变,那就是在2.6.1及2.6.1以后的版本当中,dubbo将一分为二,分为Dubbo-RPC和Dubbo-Admin,而在2.6.1以前的版本中Dubbo-Ad ...

  6. 工具安装——linux下安装JDK1.8

    1.查看Linux环境自带JDK 使用命令:# rpm -qa|grep gcj 显示内容其中包含相应信息# java-x.x.x-gcj-compat-x.x.x.x-xxjpp# java-x.x ...

  7. Jmeter 常见逻辑控制器详解

    简介 Jmeter有很多逻辑控制器,可以控制请求的执行顺序和执行逻辑,本文就Jmeter常见的逻辑控制器做一个详细的描述,并通过示例让大家了解逻辑控制器的作用.   代码的逻辑分支通常有: 条件判断I ...

  8. PyCharm上unittest 测试用例两种执行方式

    每次讲到unittest测试框架的时候,经常有同学在群里反映,为啥我的运行不是按照我往suite里添加的用例顺序执行的,为什么别人的能跑出来报告,我的就不行... 当然,首先确认代码是OK的,如果代码 ...

  9. Restricting Input in HTML Textboxes to Numeric Values

    Ok, here’s a fairly basic one – how to force a textbox to accept only numeric input. Somebody asked ...

  10. python3 百度AI-v3之 人脸对比 & 人脸检测 & 在线活体检测 接口

    #!/usr/bin/python3 # 百度人脸对比 & 人脸检测api-v3 import sys, tkinter.messagebox, ast import ssl, json,re ...