3

Wordpressにはnonceメカニズムがあり、プラグインはnonceをクライアント側のコードに出力し、クライアントがサーバーに通信するときにnonceを検証できます。

ソースコードwp_verify_nonce() (wp-includes / plugin.php内)を調べたところ、ナンスが24時間以内の場合にtrueが返されることがわかりました。

確認できるナンスを作成することは可能ですか...たとえば....1分前ですか?

どのように?

add_filter() とを経由する方法があると思いますnonce_life。しかし、私はどこにでもあるナンスに短い寿命を持たせたくありません。プラグインで使用されているナンスだけの寿命を短くしたい。

4

1 に答える 1

1

ワードプレスのナンスに関するドキュメントはほとんど見つかりませんでした。

コード自体はそれほど複雑ではなく、wp_verify_nonce()関数を単純に置き換える方法もありますが、ナンスはワードプレス全体の多くの場所で使用されていると思います。私の置き換えによって他のものが壊れることはないと確信しています。

ここや他の場所からの役立つ提案がないため、ナンスをより早く期限切れにするというアイデアを放棄し、自分のノンス/タイムスタンプフィールドを追加しました。

私が書いているプラ​​グインはナンスを生成し、それをスクリプトブロックに埋め込み、それをWebページにレンダリングします。ページ内のJavascriptがwordpressadmin-ajax.phpと通信すると、ナンスが返送されます。次に、Wordpressはナンスを検証し、ナンスwp_verify_nonce()の有効期限が切れていない場合はリクエストを許可します(必要に応じて12時間または24時間)。このチェックでは、発信者のIDも確認されます。

私がしたことは、単に別のナンス、暗号化されたタイムスタンプを生成することでした。WPナンスと同じように、javascriptスクリプトブロックに埋め込まれます。同じ方法で再送信され、同様の方法で検証されます。復号化して、タイムスタンプが「最近」であることを確認します。
違いは、プラグインが検証を制御するため、「最新性」のしきい値を設定できることです。

于 2012-06-04T16:48:40.507 に答える