WordPress の nonces ガイド
公開: 2023-02-12セキュリティは、すべての Web サイト所有者にとって重要なトピックです。 ウェブサイトを安全に保つための戦略はたくさんありますが、WordPress でナンスを使用することも見逃せません。 これは、最も広く使用されているセキュリティ機能の 1 つであり、さまざまな潜在的な問題を防ぎます。
nonce は「一度だけ使用される番号」であり、悪意のある個人やその他の悪用からフォームや URL を保護します。 これらの番号は、機密性の高い操作を実行する許可を得るために、ユーザーのブラウザーが表示する必要がある識別値として機能します。
この記事では、WordPress でノンスがどのように機能し、どのように作成するかを見ていきます。 次に、ノンスを検証する方法について説明します。 始めましょう!
ナンスはWordPressでどのように機能しますか?
nonce の主な目的は、クロスサイト リクエスト フォージェリ (CSRF) などの悪意のある攻撃から WordPress Web サイトを保護することです。 このタイプの攻撃は、ユーザーをだましてフォームを送信させたり、Web サイトに有害なリンクをクリックさせたりします。 サイトを保護するために、WordPress は nonce 値をチェックし、その値が正しい場合にのみアクションの完了を許可します。
ノンスはすでに WordPress の機能の一部であり、WordPress で生成された要素にナンスを追加する必要はありません。 これは、投稿の追加や編集などの主要な操作が自動的に保護されることを意味します。
nonce を使用する場合、デフォルトの有効期間は 24 時間です。 その後、nonce を使用して、定義されたアクションを検証することはできなくなります。 ただし、この寿命は Web サイト管理者が調整できます。
nonces が防御する最も一般的な CSRF 攻撃の 1 つは、ユーザー アカウントの悪意のある削除です。 ノンスを実装すると、管理画面でアカウント削除用の URL が生成されます。 WordPress はその URL の末尾に nonce を追加します。これは次のようになります。
http://yourdomain.com/wp-admin/users.php?user=7&action=delete&_wpnonce=c214gd5315
攻撃者がユーザー ID を「user=8」などの別の値に置き換えようとすると、ナンスは無効になります。 アカウントの削除は失敗し、403 Forbidden エラー ページが表示されます。 これにより、悪意のある個人がサイトのコンテンツを攻撃することがはるかに困難になります.
nonces が Web サイトを保護できることを知ることは重要ですが、ナンスの実装方法も理解する必要があります。 それらはデフォルトの WordPress 機能に対して既に有効ですが、テーマやプラグインに対して手動で実装する必要がある場合があります。
ノンスの作成
ノンスを作成するには、Web サイトのコードに関数を追加する必要があります。 nonce 作成コードはすべてfunctions.phpファイルに配置されます。 このファイルを開くには、WordPress ダッシュボードで[外観] > [テーマ エディター]に移動します。 右側にあるfunctions.phpをクリックして、ファイル エディターを開きます。
ナンスは、URL、フォーム、およびアクションに対して個別に実装されます。 アクションナンスを作成するには、このファイルに次のコードを追加します。
$nonce= wp_create_nonce('$action');
コードの「$action」セクションは、ノンスで検証するアクションを反映するように調整する必要があります。 例として、アクション「delete-post」を使用すると、投稿を削除しようとするユーザーを確認するためのナンスが設定されます。
URL の nonce を作成するには、次のコードを使用できます。
$nonce= wp_nonce_url();
括弧内に、関数の引数を記述する必要があります。 これは、生の URL であり、ユーザー アクションの文字列です。 nonce のセキュリティを向上させるために、文字列は 1 人のユーザーに固有のものである必要があります。
ユーザー アカウントを削除するための nonce を作成する場合は、次のスニペットを使用できます。
$nonce= wp_nonce_url($bare_url,'delete-user_'.$user->ID);
WordPress は nonce のデフォルト名を「_wpnonce」にしますが、選択した名前を上記の文字列の末尾に追加することでこれを更新できます。
フォームの nonce を作成するには、次のコードを含めます。
$nonce= wp_nonce_field();
括弧内に、ユーザー アクションの文字列を追加する必要があります。 完了すると、関数はフォームに 2 つの隠しフィールドを作成し、最初のフィールドには nonce ハッシュ値が保持されます。 2 番目のフィールドは現在の URL です。 最終的な関数は次のようになります。
$nonce= wp_nonce_field('remove-comment_'.$comment_id);
このナンス関数には、デフォルトの WordPress ナンス名もあります。 ただし、これは必要に応じて変更することもできます。
ノンスの検証
WordPress ウェブサイトに nonce を追加したら、それを確認することが重要です。 これにより、ナンスが正しく機能し、Web サイトを安全に保つことができます。
URL とフォームの nonce を検証するために、さまざまな方法が使用されます。 URL ノンスを検証するには、次のコードをfunctions.phpファイルに追加します。
wp_verify_nonce($nonce, $action);
この関数では、「$nonce」を「delete-user」など、検証したいナンスの名前に調整します。 次に、文字列「$action」をノンスが作成された特定の時間に変更します。 関数が実行されると、ナンスが無効な場合は「false」が返されます。
一方、ノンスが有効な場合、関数は 1 または 2 を返します。これはナンスの年齢を示します。 1 の値は、ナンスが過去 12 時間に作成されたことを意味します。 2 に等しい値は、ナンスが 12 時間以上前に作成されたが、24 時間以内に作成されたことを意味します。
フォームに nonce を追加した場合は、それを確認するために次のコードが必要です。
check_admin_referer($action, $nonce);
nonce 値が有効な場合、フォームは意図したとおりに機能します。 ただし、ノンスが無効な場合、ユーザーのブラウザーはユーザーを 403 Forbidden エラー ページにリダイレクトします。
WP Engine で安全なデジタル エクスペリエンスを構築する
安定した Web サイトにはセキュリティが不可欠であり、ノンスは保護のレイヤーを追加します。 それらを実装するには、 functions.phpファイルにコードを追加するだけです。 使用するコードは、作成するノンスの種類と保護するアクションによって異なります。
ナンスを作成して実装するとサイトのセキュリティが強化されますが、考慮すべきセキュリティ プロトコルは他にもあります。 幸いなことに、WP Engine の安全な WordPress ホスティング プラットフォームは、ユーザーと開発者に最高のセキュリティ リソースを提供します。 これにより、WordPress サイトを完成させることに集中する時間が増えます。