javaee论坛

普通会员

225648

帖子

352

回复

366

积分

楼主
发表于 2017-07-19 16:11:46 | 查看: 124 | 回复: 2
前面说过,要在所有提交给Laravel的form表单中加入{{csrf_field()}}标签,这个模板会渲染出一个令牌,来防止CSRF攻击。

这里解释一下为什么一定要加入该标签。在app\Http\Kernel.php(kernel : 核心),设置的全局中间件之一:

\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class

会对提交过来的表单进行上述令牌的验证,其他中间件的作用以后遇到再说。

解除CSRF保护

文档上的那个例子我是没有看懂,但是我看懂了怎么解除该保护,那就是把你不需要验证的路由设置在上述中间件文件中:

<?phpnamespace App\Http\Middleware;use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;class VerifyCsrfToken extends BaseVerifier{    /**     * The URIs that should be excluded from CSRF verification.     * 翻译一下就是下面的URL地址是被排除在CSRF保护之外的     * @var array     */    protected $except = [        //这里就是举个例子        'users/store'        ];}

X-CSRF-Token

这个东西是什么我也不知道,但是知道怎么用。

  1. 在HTML页面的meta中使用{{csrf_token()}} 进行渲染
  2. 如果直接form表单提交的话那么就没关系,如果是Ajax进行提交的话,需要将下面的内容一起提交给后台。
$.ajaxSetUp({    headers:{        'X-CSRF-TOKEN':$("meta[name='csrf-token']").attr('content')    }});

这一段纯Jquery代码就不解释了。

5.4


普通会员

0

帖子

316

回复

320

积分
沙发
发表于 2022-05-10 17:24:23

还是很厉害的

普通会员

0

帖子

240

回复

242

积分
板凳
发表于 2024-04-29 01:27:56

看看

您需要登录后才可以回帖 登录 | 立即注册

触屏版| 电脑版

技术支持 历史网 V2.0 © 2016-2017