WorkPressのノンシーの取り扱い
WordPressを作成し、特定のアクションのためのユニークなハッシュを確認するには、NCEシステムを使用して簡単に提供しています.WordPressはNoneを使用してセキュリティトークンを参照しますが、それらは真のnoncesではありません.以下にWordPressの使用方法を定義します.
WordPressのセキュリティトークンは「Nonces」と呼ばれています(これはNoncesからの上記の違いにも関わらず)ノンセスと同じ目的があります.彼らはCSRFを含む攻撃のいくつかのタイプから保護するのを助けるが、彼らが一回の使用のためにチェックされないので、リプレイ攻撃から保護しません.認証、認証、またはアクセス制御のために、noncesを決して頼らないでください.CurrentRule UserRank Can ()を使用して関数を保護し、常にNIESを侵害することができます.
nonceを使うことが適切でないという多くの時間がありますが、noncesの良い使用例のいくつかの例は以下の通りです. データベースを変更するリンクをクリックする データベースを変更するフォームを送信する WordPressのREST APIを使用して投稿、実行、削除を行う 注意:一回限りの使用コードは24時間有効です.これは、WordPressのバージョンをtrueに考慮していない理由です.
Nonceを配置する場所によっては、WordPressにNOCESを作る方法がいくつかあります.
最も基本的なオプションは
次に、ベースURL、nonceアクション名、およびパラメータの名前をとります.これはURLパラメータとして追加された
最後に、unce値を持つ非表示フィールドを出力する簡単な方法です.また、ユーザーは、以前のページから来て確認し、有効なnonceを確認できるように、参照URLを追加します.
WordPressのダッシュボードの中で作業するときは、呼び出しによって
The
The
あなたがWordPress(例えばフェッチで)であなた自身のAPI要求をつくっているならば、ポスト、プット、または削除を使用している要求を提出したいならば、あなたはNonce値を通過しなければなりません.幸いなことに、JavaScriptファイルを正しくキューイングしている場合はかなり簡単です.
使用する場合
このパターンについて素晴らしいことは、あなたの残りのエンドポイントでNINCEを確認する必要がないことです.システムはあなたのためにそれを世話して、あなたがnonceなしで何かを提出しようとするならば、403 :禁じられた誤りを返します
注意:公的に消費可能なAPIエンドポイントは、URLフィールドにあるブラウザの右側のリストを取得できる理由です.
もう一度、適切な認証の代わりにNOCEsを使用しないでください.それらは単に認証されたユーザーが意図しない行動を実行するのを防ぐための余分のチェックです.
REST APIでは特に、ここでのnonceの例はユーザがログインしている間に送られたリクエストだけであり、エンドポイントは、現在のユーザが意図したアクションを実行できるかどうかをチェックするためにパーミッションコールバックを使うべきです.
私はまた、あなたのために重い持ち上げのいくつかの世話をするnonce関数を使用することをお勧めします.
著者
・・・アクションボタン
背景色:こっち重要
カラー:竜華ffffff!重要
ボーダーカラー:こっち重要
}
Designer and developer. Follow me on twitter: https://twitter.com/wwuulf
WordPressのセキュリティトークンは「Nonces」と呼ばれています(これはNoncesからの上記の違いにも関わらず)ノンセスと同じ目的があります.彼らはCSRFを含む攻撃のいくつかのタイプから保護するのを助けるが、彼らが一回の使用のためにチェックされないので、リプレイ攻撃から保護しません.認証、認証、またはアクセス制御のために、noncesを決して頼らないでください.CurrentRule UserRank Can ()を使用して関数を保護し、常にNIESを侵害することができます.
nonceを使うことが適切でないという多くの時間がありますが、noncesの良い使用例のいくつかの例は以下の通りです.
ノンセの作り方
Nonceを配置する場所によっては、WordPressにNOCESを作る方法がいくつかあります.
非CEコード自体を生成する
最も基本的なオプションは
wp_create_nonce
どれがあなたに値を与えるでしょう.このAPIをヘッダとしてREST APIエンドポイントに渡すのに便利です.$nonce = wp_create_nonce($action); // can be a string or integer
// example:
$nonce = wp_create_nonce('trash-post-23');
// outputs: 5817bdf2ac
NICEパラメータでURLを生成する
次に、ベースURL、nonceアクション名、およびパラメータの名前をとります.これはURLパラメータとして追加された
$url_with_nonce = wp_nonce_url($url, $action, $name);
// example:
$url_with_nonce = wp_nonce_url('<https://localhost>', 'trash-post-23', '_wpnonce');
// outputs: <https://localhost?_wpnonce=5817bdf2ac>
nonce nameとvalueを持つhidden inputを生成する
最後に、unce値を持つ非表示フィールドを出力する簡単な方法です.また、ユーザーは、以前のページから来て確認し、有効なnonceを確認できるように、参照URLを追加します.
wp_nonce_field($action, $name, $referer, $echo);
// example:
wp_nonce_field('trash-post-23');
// outputs:
// <input type="hidden" id="_wpnonce" name="_wpnonce" value="5817bdf2ac">
// <input type="hidden" name="_wp_http_referer" value="/wp-admin/plugins.php?plugin_status=all&paged=1&s">
非CEを確かめる方法
WordPressのダッシュボードの中で作業するときは、呼び出しによって
check_admin_referer
. デフォルトでは、アクション名を渡す必要があります.デフォルトのパラメータ名を_wpnonce
), これを2番目のパラメータとして渡すことができますcheck_admin_referer($action, $name);
// example:
check_admin_referer('trash-post-23');
Asyncリクエストで作業する場合、いくつかのオプションがあります.チェックサムAjaxLessレファレンス
The
check_ajax_referer
関数は検証を処理し、リクエストを処理するのを止めるcheck_ajax_referer($action);
// example:
check_ajax_referer('trash-post-23');
ウッヘン
The
wp_verify_nonce
関数は検証を処理しますが、エラーを返すのはあなた次第です.403を返すことを推奨します.wp_verify_nonce($nonce, $action);
// example:
wp_verify_nonce('5817bdf2ac', 'trash-post-23'); // the nonce itself would be passed to the request and verified from the body or parameter list
REST APIリクエストを使用したnoncesの使用
あなたがWordPress(例えばフェッチで)であなた自身のAPI要求をつくっているならば、ポスト、プット、または削除を使用している要求を提出したいならば、あなたはNonce値を通過しなければなりません.幸いなことに、JavaScriptファイルを正しくキューイングしている場合はかなり簡単です.
使用する場合
wp_enqueue_script
他の関数を渡すことができますwp_localize_script
任意のデータを使用して、そのファイルからアクセスできます.wp_enqueue_script(
'ndx-script',
$path,
[],
'1.0.0',
true
);
wp_localize_script(
'ndx-script',
'wp_api',
[
'nonce' => wp_create_nonce('wp_rest')
]
);
基本的には、enqueueスクリプトの名前を参照し、JavaScriptで使用する独自の変数名を設定し、オプションの配列を渡します.これで、JavaScriptのグローバルオブジェクトを提供します.ここでは、どのようにNINCEをフェッチ文で使用するでしょうfetch(PATH, {
headers: {
'X-WP-Nonce': wp_api.nonce
},
method: 'POST',
body: JSON.stringify({ name: value })
})
.then(response => response.json())
.then(response => {
// do something here
})
この重要な部分は、FETCHステートメントの2番目のパラメータのヘッダオプションです.カスタムヘッダは常にX
それからWP-Nonce
は、WordPress自身で定義され、何を探すでしょう.このパターンについて素晴らしいことは、あなたの残りのエンドポイントでNINCEを確認する必要がないことです.システムはあなたのためにそれを世話して、あなたがnonceなしで何かを提出しようとするならば、403 :禁じられた誤りを返します
注意:公的に消費可能なAPIエンドポイントは、URLフィールドにあるブラウザの右側のリストを取得できる理由です.
包み上げ
もう一度、適切な認証の代わりにNOCEsを使用しないでください.それらは単に認証されたユーザーが意図しない行動を実行するのを防ぐための余分のチェックです.
REST APIでは特に、ここでのnonceの例はユーザがログインしている間に送られたリクエストだけであり、エンドポイントは、現在のユーザが意図したアクションを実行できるかどうかをチェックするためにパーミッションコールバックを使うべきです.
私はまた、あなたのために重い持ち上げのいくつかの世話をするnonce関数を使用することをお勧めします.
著者
・・・アクションボタン
背景色:こっち重要
カラー:竜華ffffff!重要
ボーダーカラー:こっち重要
}
デビッドウルフ
Designer and developer. Follow me on twitter: https://twitter.com/wwuulf
Reference
この問題について(WorkPressのノンシーの取り扱い), 我々は、より多くの情報をここで見つけました https://dev.to/david_woolf/handling-nonces-in-wordpress-37eiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol