Laravelでのcsrf攻撃の解決策
解決策: 1. Laravel を使用して、ユーザー セッションごとに「CSRF トークン」を自動的に生成します。このトークンは、ログインしているユーザーとリクエストを開始したユーザーが同一人物であるかどうかを確認するために使用できます。そうでない場合、リクエストは失敗します。 2 、トークン値を取得するためのグローバル ヘルパー関数 "csrf_token" が提供されます。ビュー送信フォームにトークン コードを追加するだけです。構文は "<...value php="" echo>"。
この記事の動作環境: Windows 10 システム、Laravel バージョン 9、Dell G3 コンピューター。
laravel における csrf 攻撃の解決策
CSRF は、Cross-site request forgery の英語の略語です;
Laravel フレームワークで CSRF 攻撃を回避することは非常に困難です。
1. Laravel はユーザー セッションごとに CSRF トークンを自動的に生成します。このトークンは、ログインしているユーザーとリクエスターが同一人物であるかどうかを確認するために使用できます。そうでない場合、リクエストは失敗します。 (原理は検証コードと同じです。)
2. Laravel はトークン値を取得するためのグローバル ヘルパー関数 csrf_token を提供しているため、次の HTML コードをビュー送信フォームに追加するだけで済みます。トークン:
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
Laravel で CSRF 攻撃を回避する方法
ケース: ケースを通じて csrf メカニズムの検証を実装する
1. 2 つのルートを作成します。 1 つは表示フォーム (get) 用、もう 1 つはリクエストの処理 (post) です
Route::get('test6','Home\TestController@test6');Route::post('test7','Home\TestController@test7');
2. 必要なメソッドを作成します
public function test6(){ return view('home.test.test6'); } public function test7() { return "请求提交成功"; }
3. 必要な単純なフォームを作成します
4. 提出の効果 (エラーページ)
結論: 先ほどのケースを通して、laravel の csrf 検証メカニズムがデフォルトで有効になっていることがわかります。 。
5. エラー問題を解決する (csrf 検証に合格する方法)
解決策: csrf に必要なトークン値を取得し、それをリクエストで後続のメソッドに渡します
<form action="/home/test/test7" method="post"> 用户名:<input type="text" name="username"><br> <input type="hidden" name="_token" value="{{csrf_token()}}"> {{csrf_field()}} <input type="submit" value="提交"></form>
簡略化csrf_token メソッドの : {{csrf_field()}}
特定の式:
2 つの違い:
Csrf_token のみトークンの値を出力します。
Csrf_field は、入力された隠しフィールド全体を出力します。
後で使用する場合の選択方法: ほとんどの場合、状況に応じて選択できます。ただし、開発者に選択権がなく、csrf_token を使用しなければならない場合は、非同期フォーム送信メソッドが使用されます。
CSRF 検証から例外ルーティングを除外する
データを取得するためのサードパーティ API へのリクエストなど、すべてのリクエストが CSRF 攻撃を回避する必要があるわけではありません。
例外を設定するには、除外するリクエスト URL を VerifyCsrfToken (app/Http/Middleware/VerifyCsrfToken.php) ミドルウェアの $excel プロパティ配列に追加します。
構成を記述して例外を設定します。
シングルルート除外の記述方法
'home.test.test6',
複数の要素は「,」で区切って配列の記述方法に従います。
'home.test.test6','home.test.test7'
すべてのルートを除外して csrf を使用する必要がある場合は、次のように記述できます:
'*'
[関連する推奨事項: laravel ビデオ チュートリアル ]
以上がLaravelでのcsrf攻撃の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

PHP でのデータベース操作は、オブジェクトをリレーショナル データベースにマップする ORM を使用して簡素化されます。 Laravel の EloquentORM を使用すると、オブジェクト指向構文を使用してデータベースと対話できます。モデル クラスを定義したり、Eloquent メソッドを使用したり、実際にブログ システムを構築したりすることで ORM を使用できます。

PHP 単体テスト ツール分析: PHPUnit: 大規模プロジェクトに適しており、包括的な機能を提供し、インストールが簡単ですが、冗長で遅い場合があります。 PHPUnitWrapper: 小規模プロジェクトに適しており、使いやすく、Lumen/Laravel に最適化されていますが、機能が限られており、コード カバレッジ分析は提供されず、コミュニティ サポートも限られています。

Laravel 9 と CodeIgniter 4 の最新バージョンでは、更新された機能と改善が提供されます。 Laravel9はMVCアーキテクチャを採用しており、データベース移行、認証、テンプレートエンジンなどの機能を提供します。 CodeIgniter4 は、HMVC アーキテクチャを使用してルーティング、ORM、およびキャッシュを提供します。パフォーマンスの面では、Laravel9 のサービスプロバイダーベースの設計パターンと CodeIgniter4 の軽量フレームワークにより、優れたパフォーマンスが得られます。実際のアプリケーションでは、Laravel9 は柔軟性と強力な機能を必要とする複雑なプロジェクトに適しており、CodeIgniter4 は迅速な開発や小規模なアプリケーションに適しています。

Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

Laravel と CodeIgniter のデータ処理機能を比較します。 ORM: Laravel はクラスとオブジェクトのリレーショナル マッピングを提供する EloquentORM を使用しますが、CodeIgniter は ActiveRecord を使用してデータベース モデルを PHP クラスのサブクラスとして表します。クエリビルダー: Laravel には柔軟なチェーンクエリ API がありますが、CodeIgniter のクエリビルダーはよりシンプルで配列ベースです。データ検証: Laravel はカスタム検証ルールをサポートする Validator クラスを提供しますが、CodeIgniter には組み込みの検証関数が少なく、カスタム ルールの手動コーディングが必要です。実践例:ユーザー登録例はLarを示しています

大規模プロジェクト用のフレームワークを選択する場合、Laravel と CodeIgniter にはそれぞれ独自の利点があります。 Laravel はエンタープライズレベルのアプリケーション向けに設計されており、モジュール設計、依存関係の注入、強力な機能セットを提供します。 CodeIgniter は、速度と使いやすさを重視した、小規模から中規模のプロジェクトに適した軽量フレームワークです。複雑な要件と多数のユーザーを伴う大規模なプロジェクトには、Laravel のパワーとスケーラビリティがより適しています。単純なプロジェクトやリソースが限られている状況では、CodeIgniter の軽量で迅速な開発機能がより理想的です。

初心者にとって、CodeIgniter は学習曲線が緩やかで機能は少ないですが、基本的なニーズはカバーしています。 Laravel は幅広い機能セットを提供しますが、学習曲線はわずかに急になります。パフォーマンスの点では、Laravel と CodeIgniter はどちらも良好なパフォーマンスを示します。 Laravel にはより広範なドキュメントとアクティブなコミュニティ サポートがあり、CodeIgniter はよりシンプルで軽量で、強力なセキュリティ機能を備えています。ブログアプリケーションを構築する実際のケースでは、Laravel の EloquentORM を使用するとデータ操作が簡素化されますが、CodeIgniter ではより手動の構成が必要になります。

PHP 単体テストおよび統合テスト ガイド 単体テスト: コードまたは関数の単一単位に焦点を当て、PHPUnit を使用して検証用のテスト ケース クラスを作成します。統合テスト: 複数のコードユニットがどのように連携するかに注意し、PHPUnit の setUp() メソッドと TearDown() メソッドを使用してテスト環境をセットアップおよびクリーンアップします。実際のケース: PHPUnit を使用して、データベースの作成、サーバーの起動、テストコードの作成など、Laravel アプリケーションの単体テストと統合テストを実行します。
