WordPressセキュリティ:NONCEを使用してテーマとプラグインコードを保護します
WordPressテーマまたはプラグインコードのセキュリティを保護することが重要であり、悪意のあるユーザーからの攻撃を効果的に防ぐことができます。 WordPressのフォームデータを掃除、脱出、検証する方法、およびWordPressテーマの品質を改善するためにVIPスキャナーを使用する方法の前に説明しました。今日、私たちは、NONCE(1回限りのデジタル)がWordPressのテーマとプラグインを安全に保つのにどのように役立つかを探ります。
wp_create_nonce()
関数を使用して行われます。これは、検証するノンセと関連する操作の2つのパラメーターを受け入れます。 wp_verify_nonce()
…特定の種類の虐待(悪意またはその他)からURLやフォームを保護するのに役立つ「1回限りの使用番号」。
https://www.php.cn/link/c5af1dfde10402285102771ad64b3dac WordPressでは、Nonceは技術的には数字ではありません(文字と数字のハッシュです)、悪意のあるユーザーがアクションを実行するのを防ぐのに役立ちます。
WordPress nonceの作業は、2つの部分に分かれています
nonce(hash value)を作成し、フォームまたはアクションを通じて送信し、
_wpnonce
のnonce値を持っているかどうかを確認します。 NonCEが存在しないか、期待値と一致しない場合、投稿は削除されません。 これにより、悪意のあるユーザーが多数の投稿を削除する可能性があります。たとえば、ノンセはID 542:に属しているため、以下は機能しません。
https://www.php.cn/link/322d830da1130169fb4ca1c7543799d0 https://www.php.cn/link/dd4143061640d55fb312dd0ce8a76e https://www.php.cn/link/9e0f9113b44003201076a9fade1b72d8
プラグインにWordPress Nonceを実装する方法を見てみましょう。
独自の設定画面を備えた基本プラグインから始めましょう。設定画面には、WordPressオプションテーブルに送信および保存できるフィールドがあります。
次のコードを新しいファイルに入力してくださいwp-content/plugins/implementing-wordpress-nonces/implementing-wordpress-nonces.php
:
// ... (插件代码,与原文相同) ...
WordPress Management>
このアイテムをクリックすると、1つのフィールドのみで設定画面に移動されます。
任意の値を入力し、「保存」をクリックします。すべてが機能する場合は、確認情報と入力した値が表示されます。
セキュリティの脆弱性を実証します
次のURLをWebブラウザアドレスバーに入力します(ドメイン名をWordPressのインストール場所に置き換えます):
注意何が起こったのですか?値は単にABCとして保存され、URLに直接アクセスしてWordPressにログインします。 の代わりにコードで
)を使用できますが(
を使用してセキュリティの問題をより簡単に実証します)、これは役に立ちません - 悪意のあるユーザーは引き続き自分自身を使用したり、クリックしてクリックすることができますこのリンクを使用すると、この画面にPOSTリクエストを送信すると、オプション値が変更されます。
これは、クロスサイトリクエスト偽造(またはCSRF)と呼ばれます。悪意のあるWebサイト、電子メール、アプリケーションなどにより、ユーザーのWebブラウザーは不要な操作を実行します。
この攻撃が可能にならないように、WordPress Nonceを作成および検証します。 $_POST
$_REQUEST
非CE $_REQUEST
でプラグインを保護します
前述のように、このプロセスは2つのステップに分かれています。最初に、フォームで提出される非CEを作成する必要があります。次に、フォームを送信するときにNonCEを確認する必要があります。
私たちのフォームでノンセフィールドを作成するには、wp_nonce_field()
:
ノンセの隠しフォームフィールドを取得または表示します...フォームリクエストのコンテンツが現在のサイトからではなく、現在のサイトから来ていることを確認するために使用されます...
入力ボタンの上に次のコードを追加します
// ... (插件代码,与原文相同) ...
4つのパラメーターを受け入れる - 最初の2つが最も重要です:wp_nonce_field
$action
implementing_wordpress_nonces_save
を使用します
$name
implementing_wordpress_nonces_nonce
に名前を付けました。
:wp_verify_nonce( $name, $action )
を使用して実装する必要があります。
ノンセが正しいことを確認し、指定された操作と比較して期限切れになっていないことを確認します。この関数は、現在のリクエストで送信されたNONCEを検証するために使用されます。通常、プラグインの「保存設定」部分を次のコードに置き換えます。PHP変数を介してアクセスされます。
$_REQUEST
admin_screen()
このコードは、次の操作を実行します:
wp_nonce_field( 'implementing_wordpress_nonces_save', 'implementing_wordpress_nonces_nonce' );
最初に、何かを提出したかどうかをチェックします。
。
>ノンセが実装されており、検証されている場合、「無効なノンセ仕様」通知が表示されます:
...(残りは元のテキストと同じですが、言語と表現は、元の意図を変えないように詳細に調整されています)....
以上がWordPress noncesとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。