1. ホーム
  2. wordpress

[解決済み] wp_verify_nonce()の意味は?

2022-02-18 07:11:11

質問

を読みました。 参照 この関数は、Wordpressで使用されていますが、私はこの関数が実際に何をするのかまだ理解していません。

私はワードプレスでメタボックスを作成するためのチュートリアルを読んでいて、私はデータを保存する関数の中にこのコードがあります。

if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
                return $post_id;
}

どなたか、wp_verify_nonce()の意味を簡単に説明していただけませんか?

どのように解決するのですか?

nonce は「一度だけ使用される番号」で、WP が POST データが安全な場所から送られてきたことを確認するために使用するコードです。これは、あなたのプラグインが安全でないソースからのデータを消化してしまうことがないようにするために有用です ( クロスサイトリクエストフォージェリ ).

マーク・ジャキースのこのブログの記事 は、それらを理解するのに有効です。

<ブロッククオート

[nonces]は、WordPressインストール、WordPressユーザー、アクション、アクションのオブジェクト、アクションの時間(24時間ウィンドウ)に対して一意です。つまり、これらのいずれかが変更された場合、nonceは無効となります。つまり、もしあなたが(何らかの方法で)私が使用しているnonceを傍受した場合、まず第一に、私を騙すためにこの鍵を使用する時間は24時間しかないのです。

nonce を作成するには wp_create_nonce ある文字列を指定し、nonce のための「コンテキスト」を提供します。これは nonce のための「コンテキスト」を提供するもので、nonce はあなたに文字列を返します。そして、この nonce を POST リクエストの一部として含めます。受信側のページは、同じコンテキストを使用して自分自身の nonce を作成し、それらが一致するかどうかを確認する必要があります。

この場合、与えられたコンテキストは plugin_basename(__FILE__) . これは、同じプラグイン内から呼び出されるたびに、同じ文字列を生成します ( ここで ).

を設定した場合 wp_verify_nonce は、Mark が指定したのと同じ状況で作成され、同じコンテキスト文字列を持つ nonce を受け取ると、true を返します。

要するに

!wp_verify_nonce

は、wp_verify_nonce が false を返した場合に true を返します。

($_POST[$meta_box['name'].'_noncename'], 

の第一引数です。 wp_verify_nonce : チェックする nonce です。このコードでは、グローバル変数 $_POST に格納されている nonce を post リクエストから取得します。

plugin_basename(__FILE__) )

の第2引数です。 wp_verify_nonce 最初の nonce をチェックするための新しい nonce を生成するためのコンテキストです。

{ return $post_id; }

nonce が一致しない場合、現在の関数の実行を停止し、変数 $post_id .