首页 Order Laravel 正文

Laravel 表单伪造和 CSRF 保护

金鹏头像 金鹏 Laravel 2022-04-01 11:04:17 0 344
导读:一.表单伪造1.之前一直用的GET 请求方式,而表单可以实现POST 方式,我们来实验下:2. 先在TaskController 创建...
.表单伪造

1. 之前一直用的GET 请求方式,而表单可以实现 POST 方式,我们来实验下:

2. 先在 TaskController 创建两个方法,一个表单页,一个接受表单数据路由;

public function form()

{

return view( 'form ');

}

 

//表单

Route ::get( 'task/form ', 'TaskController@form ');

 

//接受表单数据

Route ::any( 'task/getform ', function () {

return \Illuminate\Support\Facades\Request ::method();

});

 

3. 表单页以 post 送,路由也使用 post接受,以下表单提交会出现 419 错误; 

<form action="/task/getform" method="post">

户名 <input type="text" name="user">

<button type="submit">提交</button>

</form>

 

4. 这是为了避免被跨站请求伪造攻击,框架提供了 CSRF 令牌保护,请求时验证;

<input type="hidden" name="_token" value="{{csrf_token()}}">

 

5. 表单可以 POST 提交方式,那其它提交方式该如何实现呢?可以采用伪造技术;

 <input type="hidden" name="_method" value="PUT">

 

6. 对于 CSRF 令牌保护和表单伪造提交方式,也支持快捷方式的声明,如下:

@csrf

@method( 'PUT')

 

7. 如果我们想让某些 URL 关闭 csrf 验证,可以设置 csrf 名单;

8.  白名单具体设置位置在:中间件目录下的 VerifyCsrfToken.php 文件

9. 当然,不建议直接注释掉这个验证 csrf 功能的中间件;

 

protected $except = [

//

'api/* ',

];


本文地址:https://www.jinpeng.work/?id=154
若非特殊说明,文章均属本站原创,转载请注明原链接。
广告3

欢迎 发表评论:

  • 请填写验证码

日历

«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930

控制面板

您好,欢迎到访网站!
  查看权限
广告2

退出请按Esc键