ThinkPHP にはフォーム トークン検証機能が組み込まれており、リモートからのフォーム送信やその他のセキュリティ保護を効果的に防止できます。
フォームトークン検証に関連する構成パラメーターは次のとおりです:
フォームのトークン検証機能がオンになっている場合、システムはフォームのテンプレート ファイルに TOKEN_NAME という名前の隠しフィールドを自動的に生成します。その値は TOKEN_TYPE によって生成されたハッシュ文字列であり、トークンの自動コマンドを実現するために使用されます。カード認証フォーム。
自動生成された隠しフィールドはフォーム終了マークの前に配置されます。隠しフィールドの位置を制御したい場合は、フォーム ページに __TOKEN__ マークを手動で追加すると、テンプレートの出力時にシステムが自動的に置き換えます。フォームのトークン検証がオンになっており、個々のフォームでトークン検証機能を使用する必要がない場合は、フォーム ページに __NOTOKEN__ を追加すると、システムは現在のフォームのトークン検証を無視します。
ページ上に複数のフォームがある場合は、__TOKEN__ 識別子を追加し、トークン検証が必要なフォームが 1 つだけであることを確認することをお勧めします。
データ オブジェクトの作成時にモデル クラスはフォーム トークンの検証を自動的に実行します。データ オブジェクトの作成に create メソッドを使用しない場合は、モデルの autoCheckToken メソッドを手動で呼び出してフォーム トークンの検証を実行する必要があります。 false が返された場合は、フォーム トークン検証エラーを示します。例:
パブリックテンプレート置換関数は、ThinkPHPフレームワークのView.class.phpで定義されています
上記の if (C('TOKEN_ON')) は、トークン検証がオンになっているかどうかを判断するためのもので、オンになっている場合は、 $_SESSION[$tokenName] = $tokenValue; が呼び出されます。 $_SESSION['__hash__ '] の割り当て。トークン検証を実行したくない場合は、ページの の前に {__NOTOKEN__} を追加するだけで、関数によって空に置き換えられます。
トークン検証関数はThinkPHPのModel.class.phpクラスで定義されています