laravel中关闭CSRF的方法
2017-04-07 14:52
344 查看
在框架中一般情况下报这种错误的都是csrf防攻击未关闭
那么我们可以关闭这种csrf有以下两种方法:
第一种
打开文件路径:app\Http\Kernel.PHP找到这行代码并注释掉:
'App\Http\Middleware\VerifyCsrfToken'
第二种
打开文件路径:app\Http\Middleware\VerifyCsrfToken.PHP修改为:可开启和关闭
代码如下:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** * The URIs that should be excluded from CSRF verification. * * @var array */ public function handle($request, Closure $next) { // 使用CSRF // return parent::handle($request, $next); // 禁用CSRF return $next($request); } // protected $except = [ // // // ]; }
CSRF的使用也有两种方法:
方法一:
在页面HTML的代码中加入:
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
方法二:
使用cookie方式的CSRF,可以不用在每个页面都加入input标签。
把app\Http\Middleware\VerifyCsrfToken.php修改为:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return parent::addCookieToResponse($request, $next($request)); } }
我们在这个路径下也可以对指定的表单提交方式使用CSRF,
代码如下:
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // Add this: if($request->method() == 'POST') { return $next($request); } if ($request->method() == 'GET' || $this->tokensMatch($request)) { return $next($request); } throw new TokenMismatchException; } }
我们在方法二中只能对GET的方式提交使用CSRF,
对POST方式提交表单是需要禁用CSRF的;
修改CSRF的cookie名称方法
通常使用CSRF时,会往浏览器写一个cookie,如:要修改这个名称值,可以到打开这个文件:vendor\laravel\framework\src\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken.php
找到”XSRF-TOKEN“,修改它即可。
当然,你也可以在app\Http\Middleware\VerifyCsrfToken.php文件中,
重写addCookieToResponse(...)方法做到。
进入手册中查看的session和csrf解释:https://laravel-china.org/docs/5.1/routing#route-groups
个人主页
相关文章推荐
- Laravel5 开启关闭 CSRF token 方法
- laravel中关闭CSRF的方法
- laravel中关闭csrf方法
- laravel关闭csrf验证
- Laravel - CSRF token禁用方法
- Laravel学习之VerifyCsrfToken 报错解决方法详解
- [PHP] - Laravel - CSRF token禁用方法与排除验证csrf_token的url设置
- Laravel 框架指定路由关闭 csrf
- laravel post TokenMismatchException in VerifyCsrfToken.php line 53 问题解决方法
- laravel中CSRF的方法
- laravel post TokenMismatchException in VerifyCsrfToken.php line 53 问题解决方法
- Laravel - CSRF token禁用方法
- laravel csrf排除路由,禁止,关闭指定路由
- Laravel - CSRF token禁用方法
- [PHP] - Laravel - CSRF token禁用方法
- [PHP] - Laravel - CSRF token禁用方法
- Laravel - CSRF token禁用方法
- [PHP] - Laravel - CSRF token禁用方法
- springMVC 防CSRF攻击的方法
- yii 2 局部关闭 CSRF 拦截