laravel 笔记

CSRF 保护

laravel 会自动为每个活跃用户的会话生成一个CSRF【令牌】,再html表单中,都应该在表单中包含一个隐藏的CSRF标记字段,以便CSRF保护中间件可以验证该请求,你可以使用@csrf   Blade指令来生成令牌字段

<form method='POST' action='/profile'>

          @csrf

</form>

包含再Web中间件组里的  VerifyCsrfToken  [中间件] 会自动验证请求里的令牌是否与存储在会话中令牌匹配。

CSRF令牌 & JavaScript 

当构建由javascript驱动的应用时,可以方便的让JavaScript HTTP 函数发起每一个请求时自动附上CSRF令牌。默认情况下,resources/js/bootstap.js 文件会用Axios HTTP 函数库注册的 crsf-token   meta标签中的值。如果你不使用这个函数库,你需要手动为你的应用配置此行为。

CSRF白名单

典型做法,你可以把这类路由放到routes/web.php 外,因为 RouteServiceProvider 的 web 中间件使用该文件中的所有路由。不过,你也可以通过将这类URL添加到 VerifyCsrfToken 中间件的$except 属性来排除对这类路由的CSRF保护,如图所示:

 X-CSRF-TOKEN

除了检查POST参数中的CSRF令牌外,VerifyCsrfToken 中间件还会检查 X-CSRF-TOKEN 请求头。你应该将令牌保存在HTML  meta标签中,如下:

<meta name='csrf-token' content='{{ csrf-token() }}'>

 

posted @ 2019-08-27 15:52  尚真  阅读(156)  评论(0编辑  收藏  举报