web-dev-qa-db-ja.com

nonceはいつ使用して検証する必要がありますか?

WordPress jqueryからのajax呼び出しをPHPに投稿し、PHP jqueryに。

Nonceをいつ使用して検証する必要があるかを知る必要がありますか?

1
Trello

Nonceを使用して、リクエストがWebサイトによって生成されたページからのものであることを確認します。

AJAXリクエストに付属しているナンスを確認した場合、wp_create_nonce()が実行されたサイトのフロントエンドからのリクエストである可能性がかなり高くなります。ボット、サードパーティアプリケーション、またはadmin-ajax.phpファイルにリクエストを送信する悪意のあるスクリプトよりも。

ドキュメント からのこのメッセージに注意してください。ただし、(私の強調):

これらは、CSRFを含むいくつかのタイプの攻撃からの保護に役立ちますが、1回限りの使用がチェックされないため、リプレイ攻撃からは保護しません。ナンスは、認証や承認、アクセス制御に依存してはいけません。 current_user_can()を使用して関数を保護します常に、ナンスが危険にさらされる可能性があると想定します

したがって、リクエストを保護するために使用すべき唯一のものからはほど遠いですが、特定のタイプの攻撃に対して追加のレイヤーを提供できます。

2
Jacob Peattie

特に破壊的なアクションでは、ナンスを使用してユーザーのintentを確認する必要があります。

ユーザーがクリックして投稿を削除できるリンクがあるとします。ユーザーcan実行するので、ユーザーがクリックすると投稿が削除されます。

他の誰かを想像してみてくださいtricksユーザーがこのリンクをクリックすることを想像してください(この猫の写真を見てください!)。ユーザーはまだcanするので、アクセスの観点からは許可され、投稿は引き続き削除されます。しかし、この状況で何かを削除するのはintentではありませんでした。

Nonceは、特定の期間内に特定のユーザーにアクションを制限することにより、これらの状況に一定レベルの保護を追加します。 nonceを使用する場合は、その非常に具体的なnonceを使用して、ユーザーをだましてアクションを実行させる必要があります。

2
Rarst