Laravel 5.5の前に、LaravelはデフォルトでトークンベースのCSRF保護を有効にして、アプリケーションのセキュリティを確保しました。ただし、一部の開発シナリオでは、この保護をさらに複雑にするためにオフにする必要がある場合があります。 kernel.phpファイルを変更することでこれを行うことができます。
まず、 App \ http \ kernel.phpファイルを開き、 $ middlewaregroupsプロパティでWeb構成配列を見つけ、次のコードを追加します。
protected $middlewareGroups = [
'web' => [
// ...
App\Http\Middleware\VerifyCsrfToken::class => function ($request, $next) {
return $next($request);
},
],
];
verifycsrftoken :: class Middlewareを匿名関数として定義することにより、トークンベースのCSRF保護を正常にオフにします。
特定のルートでCSRF保護のみを無効にする場合、LaravelはCSRF_Exemptメソッドを提供します。これにより、ルート定義でCSRF保護を個別にオフにすることができます。例えば:
Route::post('/api/posts', [
'middleware' => 'auth.basic',
'uses' => 'PostController@store',
])->csrf_exempt();
この方法を使用して、指定されたルートでCSRF保護を無効にすることができます。
最後に、 verifycsrftoken.phpファイルを変更して、CSRFガードコンポーネント全体を閉じることもできます。このファイルは、App \ http \ Middleware Directoryにあります。ファイルを開き、ハンドルメソッドのコードをコメントします。
class VerifyCsrfToken extends Middleware
{
protected $except = [];
public function handle($request, Closure $next)
{
// return parent::handle($request, $next);
return $next($request);
}
}
親::ハンドル($ request、$ next)にコメントすることで、CSRFガードコンポーネント全体を閉じることができます。
CSRF保護をオフにすると、いくつかの開発の問題が解決できますが、セキュリティリスクも発生する可能性があります。閉店時には、他のセキュリティ対策を講じたことを確認するか、開発環境でそれを閉鎖するように注意する必要があります。必要に応じて、コードをバックアップするか、別のより安全なソリューションを選択してください。