yii2 で CSRF 検証を部分的にオンまたはオフにするコード
この記事では主にyii2のCSRF検証を部分的にクローズ(オープン)するサンプルコードを紹介します。編集者がとても良いと思ったので、参考として共有したいと思います。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
(1) グローバルに使用する場合は、設定ファイルで直接enableCookieValidationをtrueに設定します
request => [ 'enableCookieValidation' => true, ]
csrfを使用する必要がない場合は、'enableCookieValidation' => falseに設定しますが、これは安全ではないため、 yii2 の yiiwebrequest のenableCookieValidation はデフォルトで true に設定されており、これは csrf がデフォルトで有効であることを意味するため、この値を設定してデフォルトで有効にすることもできません。
csrf を有効にすると、グローバルであるため、投稿リクエストに認証が必要になるため、データを投稿するときに、csrf データがフォームで非表示になるように設定する必要があります。
コードをコピー コードは次のとおりです:
データを投稿するときは、この値を投稿する必要があります。この値の生成は = Yii::$app->request->csrfToken ?> であり、返されます。暗号化された csrfToken。
そのため、投稿フォームであっても、ajax 投稿であっても、csrfToken の値を設定する必要があり、送信時に投稿する必要があります。そうでない場合は、エラーが発生し、認証が通過しません。
(2) 一部のコントローラーで CSRF 検証を使用したくない場合はどうすればよいですか?
方法は非常に簡単で、直接設定します
public $enableCsrfValidation = false ,
このControllerはyiiwebControllerから継承しているため、enableCsrfValidation属性から継承していることと同等となり、コントローラインスタンス作成時にcsrf機能がオフになりますこのコントローラーでは、このコントローラーの post メソッドにアクセスする場合、検証は実行されません。
たとえば、APIを開発するとき、WeChatインターフェイスがインターフェイスにデータを投稿する必要があるとき、WeChatはcsrfTokenを知らないため、投稿データにアクセスするときに、グローバルcsrfがオンになっていると、間違いなく投稿データを投稿できなくなります。無事にアクセスできました。したがって、この API の csrf をオフにする必要があります。
3) 特定のアクションを具体的に閉じたい場合はどうすればよいですか?
一部の関数では、特定のアクションで csrf 検証をオフにする必要がある場合があります。 csrf の検証が beforeAction($Action) で実装されていることはわかっています。次に、Controller の beforeAction($action) メソッドを書き換えます
public function beforeAction($action) { $currentaction = $action->id; $novalidactions = ['dologin']; if(in_array($currentaction,$novalidactions)) { $action->controller->enableCsrfValidation = false; } parent::beforeAction($action); return true; }
渡されるパラメーター $action は、このアクセス インスタンスのコントローラーです。オブジェクトには多くの情報が含まれているため、印刷して確認することができます。
まず $action->id を実行して、現在アクセスされているアクション名を取得します。 $novalidactions は、アクション名を含む配列です。これらのアクションは、CSRF 認証をオフにするために必要なすべての操作 (CSRF 認証をオフにする必要がある操作) です。
現在アクセスされているアクションがこの $novalidactions にあるかどうか。そうであれば、このアクションは csrf 機能をオフにする必要があることを意味するため、コントローラー インスタンスを
$action->controller->enableCsrfValidation = false
に設定してから、parent: : を実行します。 beforeAction($action)、この時点では、受信 $action 内のコントローラー インスタンスのenableCsrfValidation が false に変更されています。
最後に true を返す必要があります。そうでない場合、アクション操作は実行されません。
(4) 部分的にオンになっている場合はどうなりますか?
まず、設定ファイルで
request => [ 'enableCookieValidation' => false, ]
をグローバルで csrf を使用しないように設定します。
(a) コントローラーで有効にするには、
public $enableCsrfValidation = true
を設定するだけで、コントローラー全体が有効になります
(b) アクションで有効にするには
public function beforeAction($action) { $currentaction = $action->id; $accessactions = ['dologin']; i f(in_array($currentaction,$accessactions)) { $action->controller->enableCsrfValidation = true; } parent::beforeAction($action); return true; }
$ accessactions を有効にする必要があります。 csrf アクションの名前によって $action->controller->enableCsrfValidation = true が設定され、現在の操作で csrf を有効にできます。
関連する推奨事項:
以上がyii2 で CSRF 検証を部分的にオンまたはオフにするコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











360 ブラウザによって推奨される広告をオフにするにはどうすればよいですか?多くのユーザーが 360 ブラウザを使用していると思いますが、このブラウザは時々広告が表示され、多くのユーザーを悩ませています. このサイトでは、お使いのコンピュータで 360 ブラウザが推奨する広告をオフにする方法をユーザーに丁寧に紹介します。コンピュータ上の 360 ブラウザによって推奨される広告をオフにするにはどうすればよいですか?方法 1: 1. 360 セーフ ブラウザを開きます。 2. 右上隅にある「3 本の横棒」のロゴを見つけて、[設定] をクリックします。 3. ポップアップインターフェースの左側のタスクバーで[ラボ]を見つけ、[「360ホットスポット情報」機能を有効にする]にチェックを入れます。方法 2: 1. まずダブルクリックします。

新浪ニュース ソフトウェアは、基本的に公式プラットフォームによってプッシュされる多くのニュース ヘッドライン情報を提供します。各ニュース記事の内容は本物です。上下にスワイプしてワンクリックで検索および閲覧でき、全体的な読書雰囲気がより快適になります。 。携帯電話番号を入力してオンラインログイン さまざまな分野のニュースチャンネルが開設されています 24時間更新は繰り返されません 国内、海外、地域の時事ニュースが不足しません 上下にスワイプしてワンクリックで選択できます閲覧中です。ニュース コンテンツがすべてです。興味がある場合は、ニュース エクスプレス機能をオフにして、影響を受けないようにすることもできます。いつでも開いて、大量のホット ニュースの見出しをプレビューできます。編集者が提供するようになりました。オンラインの新浪ニュースユーザーへの詳細速達機能の操作手順。新浪ニュースを見つけて右下隅をクリックします

Windows 11 オペレーティング システムでは、セキュリティ センターは、ユーザーがシステムのセキュリティ状態を監視し、マルウェアから防御し、個人のプライバシーを保護するのに役立つ重要な機能です。ただし、特定のソフトウェアをインストールするときやシステム チューニングを実行するときなど、ユーザーがセキュリティ センターを一時的にオフにする必要がある場合があります。この記事では、システムを正しく安全に運用するために、Windows 11 セキュリティ センターをオフにする方法を詳しく紹介します。 1. Windows 11 セキュリティ センターをオフにする方法 Windows 11 では、セキュリティ センターをオフにしても、

Douyin は、ユーザーが自分の生活を記録し、幸せを共有できる人気のショートビデオ ソーシャル プラットフォームです。プライベート メッセージング機能は Douyin で重要な役割を果たしており、ユーザーが相互に対話する主な方法の 1 つです。場合によっては、相手がプライベート メッセージ モードをオフにしていて、メッセージを送信できない状況に遭遇することがあります。 1.Douyinプライベートメッセージの相手がプライベートメッセージモードをオフにしている場合、どうすればプライベートメッセージモードをオンにできますか? 1. 相手がプライバシー設定を有効にしているか確認する まず、相手がプライベートメッセージの受信を制限している可能性のあるプライバシー設定を有効にしていないかを確認します。知人からのプライベートメッセージのみを許可する設定をしている場合は、共通の友人やソーシャルメディアプラットフォームでのやり取りなど、他の手段で連絡を試みることができます。 2. 友達リクエストを送信します。相手がプライバシー設定をオンにしていない場合は、

Kuaishou は優れたビデオ プレーヤーです。Kuaishou のパスワード不要の支払い機能は、誰もがよく知っています。日常生活、特にプラットフォームで必要な商品を購入するときに非常に役立ちます。さて、支払いに行きましょう「キャンセルする必要があります。どうすればキャンセルできますか? パスワード不要決済機能を効果的にキャンセルするにはどうすればよいですか? パスワード不要決済のキャンセル方法は非常に簡単です。具体的な操作方法は整理されています。見ていきましょう」このサイトのガイド全体を見てみましょう。このガイドが皆さんのお役に立てれば幸いです。 Kuaishou でパスワードなしで支払いを終了する方法のチュートリアル 1. Kuaishou アプリを開き、左上隅にある 3 本の水平線をクリックします。 2. 「Kuaishou ストア」をクリックします。 3. 上のオプション バーで、パスワードなしの支払いを見つけてクリックします。 4.クリックして応援してください

Windows オペレーティング システムは、世界で最も多くのユーザーを抱えるオペレーティング システムの 1 つとして、常にユーザーに支持されています。ただし、Windows システムを使用する場合、ユーザーはウイルス攻撃、マルウェア、その他の脅威など、多くのセキュリティ リスクに遭遇する可能性があります。システム セキュリティを強化するために、Windows システムには多くのセキュリティ保護メカニズムが組み込まれています。その 1 つが Windows セキュリティ センターのリアルタイム保護機能です。今回はWindowsセキュリティセンターのリアルタイム保護をオフにする方法を詳しく紹介します。まず、しましょう

1. 電話の設定で [音と振動] をクリックします。 2. 「ドルビーアトモス」をクリックします。 3. ドルビーアトモスの後ろのスイッチをオフにします。

Windows 11 は Microsoft がリリースした最新のオペレーティング システム バージョンです。以前のバージョンと比較して、Windows 11 ではシステム セキュリティの管理と監視が強化されており、重要な機能の 1 つがセキュリティ センターです。 Security Center は、ユーザーがシステムのセキュリティ ステータスを管理および監視して、システムがマルウェアやその他のセキュリティの脅威から確実に保護されるように支援します。セキュリティ センターはシステム セキュリティを保護するために重要ですが、ユーザーが個人的なニーズやその他の理由でセキュリティ センターを無効にしたい場合があります。この記事ではWの使い方を紹介します。
