当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「関数リファレンス/wp nonce field」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(関連項目)
(en:Function_Reference/wp_nonce_field 12:33, 16 May 2015 Miccweb 版を反映、残りを和訳。)
 
(2人の利用者による、間の3版が非表示)
1行目: 1行目:
 +
{{CheckTrans}}
 +
 
<div id="Description">
 
<div id="Description">
 
== 解説 ==
 
== 解説 ==
 
</div>
 
</div>
フォームにhiddenフィールドとして追加するための[http://en.wikipedia.org/wiki/Cryptographic_nonce nonce]を取得または表示します。
 
  
nonceフィールドはフォームの内容が現在のサイトから来たものであり、他のサイトからではないということを認証するために使われます。nonceは完全な保護を提供するものではありませんが、ほとんどの場合は有効な保護になります。フォーム内でnonceフィールドを使うのは重要です。
+
フォームへ hidden フィールドとして追加するために [[用語集#Nonce|nonce]] を取得または表示します。
  
<tt>$echo</tt>をfalseに、<tt>$referer</tt>をtrueにした場合は[[関数リファレンス/wp_referer_field|<tt>wp_referer_field()</tt>]]を使ってリファラーのフィールドを取得する必要があります。<tt>$referer</tt>をtrueにし、nonceフィールドを出力した場合は、リファラーフィールドも出力されます。
+
nonce フィールドは、フォームの内容が現在のサイトから来たものであり、他のサイトからではないということを認証するために使われます。nonce は完全な保護を提供するものではありませんが、ほとんどの場合に有効な保護になります。フォーム内で nonce フィールドを使うのはとても重要です。
  
<tt>$action</tt>と<tt>$name</tt>はオプションですが、セキュリティを高めたい場合はこの二つのパラメータを設定することをお勧めいたします。パラメータなしで関数を呼び出すのが簡単ですが、nonceがなんのパラメータも必要としなくなってしまうので、デフォルト値が何かをしっているクラッカーにとってあなたのnonceを推測して被害を与えるのが簡単になってしまいます。
+
<tt>$action</tt> と <tt>$name</tt> はオプションですが、セキュリティを高めたければこの 2 つのパラメータを設定することを強く推奨します。nonce のセキュリティ方式はパラメータが必須ではないので、パラメータなしで関数を呼び出すのは簡単ですが、デフォルト値が何かを知っているクラッカーがあなたの nonce を推測して被害を与えるのが簡単になってしまいます。
  
inputのname属性は<tt>$name</tt>に設定したものになります。inputのvalue属性は作成されたnonceの値になります。
+
input 要素の name 属性は <tt>$name</tt> に設定した値になり、value 属性は <tt>[[関数リファレンス/wp_create_nonce|wp_create_nonce()]]</tt> 関数を使って生成された nonce の値になります。
  
 
<div id="Usage">
 
<div id="Usage">
== 使用法==
+
== 使い方 ==
 
</div>
 
</div>
<pre>&lt;?php wp_nonce_field( $action, $name, $referer, $echo ) ?&gt;</pre>
+
 
 +
<?php wp_nonce_field( $action, $name, $referer, $echo ) ?>
  
 
<div id="Parameters">
 
<div id="Parameters">
 
== パラメータ ==
 
== パラメータ ==
 
</div>
 
</div>
{{Parameter|$action|string|アクション名|optional|-1}}
+
 
{{Parameter|$name|string|[[wikipedia:Cryptographic_nonce|Nonce]] の名前|optional|"_wpnonce"}}
+
{{Parameter|$action|文字列|アクションの名前。実行中のコンテキストを与えてください。オプションですが''推奨''します。|オプション|-1}}
{{Parameter|$referer|boolean|初期値はtrue。認証用のrefereフィールドを設定するか否か。|optional|true}}
+
{{Parameter|$name|文字列|nonce の名前。作成される hidden フィールドの name 属性になります。フォームが送信されると、生成された nonce 値を <tt>$_POST[$name]</tt> で参照できます。|オプション|'_wpnonce'}}
{{Parameter|$echo|boolean|初期値はtrue。hiddenフィールドをフォームに出力するか否か。falseの場合はPHPの値として返す。|optional|true}}
+
{{Parameter|$referer|真偽値|<tt>[[関数リファレンス/wp_referer_field|wp_referer_field()]]</tt> 関数を使って、リファラーを表す hidden フィールドを生成するかどうか。|オプション|true}}
 +
{{Parameter|$echo|真偽値|hidden フィールドを表示する(<tt>true</tt>)か値として返す(<tt>false</tt>)か。nonce の hidden フィールドと、<tt>$referer</tt> が ''true'' ならリファラーの hidden フィールドも含まれます。|オプション|true}}
  
 
<div id="Return_Values">
 
<div id="Return_Values">
 
== 戻り値 ==
 
== 戻り値 ==
 
</div>
 
</div>
; (string) : [[wikipedia:Cryptographic_nonce|Nonce]]フィールド
+
 
 +
{{Return||文字列|<tt>$echo</tt> が ''ture'' の場合のみ。[[用語集#Nonce|nonce]] の hidden フォームフィールドと、<tt>$referer</tt> が ''true'' ならリファラーの hidden フィールドも含まれます。}}
  
 
<div id="Examples">
 
<div id="Examples">
34行目: 38行目:
 
</div>
 
</div>
  
{{NeedTrans|一部}}
+
これは、後の例よりセキュリティは低いですが、すべての引数を省略した一番シンプルな実装です。フォームに次の内容を含めます:
 
+
While less secure than the examples that follow, this is the simplest implementation which omits all arguments. In your form add the following:
+
  
 
<pre>
 
<pre>
  <?php wp_nonce_field(); ?>
+
    <?php wp_nonce_field(); ?>
 
</pre>
 
</pre>
  
It's better to name your action and nonce in your form.  Enter values for the first and second arguments to  print the necessary hidden field:
+
フォーム内でアクションと nonce に名前をつけるとよいでしょう。1 番目と 2 番目の引数に値を入れて、必要な hidden フィールドを表示します:
  
 
<pre>
 
<pre>
 
<form method="post">
 
<form method="post">
  <!-- some inputs here ... -->
+
    <!-- some inputs here ... -->
  <?php wp_nonce_field( 'name_of_my_action', 'name_of_nonce_field' ); ?>
+
    <?php wp_nonce_field( 'アクションの名前', 'nonce フィールドの名前' ); ?>
 
</form>
 
</form>
 
</pre>
 
</pre>
  
Then in the page where it is being submitted to, you may verify it using the <tt>[[Function Reference/wp_verify_nonce|wp_verify_nonce()]]</tt> function.  Notice that you have to manually retrieve the nonce (from the <tt>$_POST</tt> array in this example), and the name of the action is the ''2nd'' parameter instead of the first:
+
フォームが送信された先のページで、<tt>[[関数リファレンス/wp_verify_nonce|wp_verify_nonce()]]</tt> 関数を使ってそれを認証できます。'''注意:''' nonce は自分でコードを書いて取得する必要があります(この例では <tt>$_POST</tt> 配列から)。また、アクションの名前は先頭ではなく ''2 番目''のパラメータにします:
 
<pre>
 
<pre>
 
<?php
 
<?php
 
 
if (  
 
if (  
     ! isset( $_POST['name_of_nonce_field'] )  
+
     ! isset( $_POST['nonce フィールドの名前'] )  
     || ! wp_verify_nonce( $_POST['name_of_nonce_field'], 'name_of_my_action' )  
+
     || ! wp_verify_nonce( $_POST['nonce フィールドの名前'], 'アクションの名前' )  
 
) {
 
) {
 
+
    print 'ごめんなさい、nonce を認証できませんでした。';
  print 'Sorry, your nonce did not verify.';
+
    exit;
  exit;
+
 
+
 
} else {
 
} else {
 
+
    // フォームのデータを処理する
  // process form data
+
 
}
 
}
 
</pre>
 
</pre>
  
 
+
WordPress の管理画面内でフォームを送信して処理する場合は、<tt>[[関数リファレンス/check_admin_referer|check_admin_referer()]]</tt> 関数を使って nonce を認証します:
If you are submitting and processing the form inside the WP administration area, you may verify the nonce using the <tt>[[Function Reference/check_admin_referer|check_admin_referer()]]</tt> function:
+
  
 
<pre>
 
<pre>
 
<?php
 
<?php
 
+
// 失敗すると check_admin_referer() は自動的に "failed" ページを表示して終了 (die) します。
// if this fails, check_admin_referer() will automatically print a "failed" page and die.
+
if ( ! empty( $_POST ) && check_admin_referer( 'アクションの名前', 'nonce フィールドの名前' ) ) {
if ( ! empty( $_POST ) && check_admin_referer( 'name_of_my_action', 'name_of_nonce_field' ) ) {
+
    // フォームのデータを処理する
  // process form data
+
 
}
 
}
 
</pre>
 
</pre>
 
  
 
<div id="Notes">
 
<div id="Notes">
 
+
== 参考 ==
== 注意点 ==
+
 
</div>
 
</div>
  
<div id="Change Log">
+
<tt>$echo</tt> を falseに、<tt>$referer</tt> を trueにした場合は、[[関数リファレンス/wp_referer_field|<tt>wp_referer_field()</tt>]] を使ってリファラーのフィールドを取得する必要があります。<tt>$echo</tt> を true にして nonce フィールドを出力した場合は、リファラーフィールドも出力されます。
== 改訂履歴 ==
+
 
 +
<div id="Change_Log">
 +
== 変更履歴 ==
 
</div>
 
</div>
* Since: [[Version 2.0.4|2.0.4]]
+
 
 +
* [[Version 2.0.4|2.0.4]] : 新規導入
  
 
<div id="Source_File">
 
<div id="Source_File">
 
== ソースファイル ==
 
== ソースファイル ==
 
</div>
 
</div>
<tt>wp_nonce_field()</tt>は<tt>wp-includes/functions.php</tt>に定義されています。
+
 
 +
<tt>wp_nonce_field()</tt> は {{Trac|wp-includes/functions.php}} にあります。
  
 
<div id="Related">
 
<div id="Related">
 
== 関連項目 ==
 
== 関連項目 ==
 
</div>
 
</div>
 +
 +
[[WordPress Nonce]]
  
 
{{Nonce Functions}}
 
{{Nonce Functions}}
  
* [[Wordpress Nonce Implementation]]
+
<div id="External_Resources">
* [[関数リファレンス/wp_create_nonce|wp_create_nonce]] / [[:en:Function_Reference/wp_create_nonce|en]]
+
== 外部リソース ==
* [[関数リファレンス/check_admin_referer|check_admin_referer]] /[[:en:Function_Reference/check_admin_referer|en]]
+
</div>
* [[関数リファレンス/wp_verify_nonce|wp_verify_nonce]]
+
  
 +
* [http://markjaquith.wordpress.com/2006/06/02/wordpress-203-nonces/ Mark Jaquith - WordPress Nonces]
 +
* [http://www.prelovac.com/vladimir/improving-security-in-wordpress-plugins-using-nonces Vladimir Prelovac - Using Nonces in WordPress Plugins]
 +
* Wikipedia: [[Wikipedia:ja:ノンス|ノンス]]
  
 
{{Tag Footer}}
 
{{Tag Footer}}
  
{{原文|Function_Reference/wp_nonce_field|91188}}<!--14:05, 11 July 2010‎ Ramiy 版 -->
+
{{原文|Function Reference/wp_nonce_field|151651}} <!-- 12:33, 16 May 2015 Miccweb 版 -->
 
+
  
 +
{{DEFAULTSORT:Wp_nonce_field}}
 
[[Category:関数]]
 
[[Category:関数]]
 +
 +
[[en:Function_Reference/wp_nonce_field]]

2015年6月20日 (土) 16:16時点における最新版

この項目「関数リファレンス/wp nonce field」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、Codex ドキュメンテーションにご協力下さい。

フォームへ hidden フィールドとして追加するために nonce を取得または表示します。

nonce フィールドは、フォームの内容が現在のサイトから来たものであり、他のサイトからではないということを認証するために使われます。nonce は完全な保護を提供するものではありませんが、ほとんどの場合に有効な保護になります。フォーム内で nonce フィールドを使うのはとても重要です。

$action$name はオプションですが、セキュリティを高めたければこの 2 つのパラメータを設定することを強く推奨します。nonce のセキュリティ方式はパラメータが必須ではないので、パラメータなしで関数を呼び出すのは簡単ですが、デフォルト値が何かを知っているクラッカーがあなたの nonce を推測して被害を与えるのが簡単になってしまいます。

input 要素の name 属性は $name に設定した値になり、value 属性は wp_create_nonce() 関数を使って生成された nonce の値になります。

使い方

<?php wp_nonce_field( $action, $name, $referer, $echo ) ?>

パラメータ

$action
文字列) (オプション) アクションの名前。実行中のコンテキストを与えてください。オプションですが推奨します。
初期値: -1
$name
文字列) (オプション) nonce の名前。作成される hidden フィールドの name 属性になります。フォームが送信されると、生成された nonce 値を $_POST[$name] で参照できます。
初期値: '_wpnonce'
$referer
真偽値) (オプションwp_referer_field() 関数を使って、リファラーを表す hidden フィールドを生成するかどうか。
初期値: true
$echo
真偽値) (オプション) hidden フィールドを表示する(true)か値として返す(false)か。nonce の hidden フィールドと、$referertrue ならリファラーの hidden フィールドも含まれます。
初期値: true

戻り値

(文字列) 
$echoture の場合のみ。nonce の hidden フォームフィールドと、$referertrue ならリファラーの hidden フィールドも含まれます。

これは、後の例よりセキュリティは低いですが、すべての引数を省略した一番シンプルな実装です。フォームに次の内容を含めます:

    <?php wp_nonce_field(); ?>

フォーム内でアクションと nonce に名前をつけるとよいでしょう。1 番目と 2 番目の引数に値を入れて、必要な hidden フィールドを表示します:

<form method="post">
    <!-- some inputs here ... -->
    <?php wp_nonce_field( 'アクションの名前', 'nonce フィールドの名前' ); ?>
</form>

フォームが送信された先のページで、wp_verify_nonce() 関数を使ってそれを認証できます。注意: nonce は自分でコードを書いて取得する必要があります(この例では $_POST 配列から)。また、アクションの名前は先頭ではなく 2 番目のパラメータにします:

<?php
if ( 
    ! isset( $_POST['nonce フィールドの名前'] ) 
    || ! wp_verify_nonce( $_POST['nonce フィールドの名前'], 'アクションの名前' ) 
) {
    print 'ごめんなさい、nonce を認証できませんでした。';
    exit;
} else {
    // フォームのデータを処理する
}

WordPress の管理画面内でフォームを送信して処理する場合は、check_admin_referer() 関数を使って nonce を認証します:

<?php
// 失敗すると check_admin_referer() は自動的に "failed" ページを表示して終了 (die) します。
if ( ! empty( $_POST ) && check_admin_referer( 'アクションの名前', 'nonce フィールドの名前' ) ) {
    // フォームのデータを処理する
}

参考

$echo を falseに、$referer を trueにした場合は、wp_referer_field() を使ってリファラーのフィールドを取得する必要があります。$echo を true にして nonce フィールドを出力した場合は、リファラーフィールドも出力されます。

変更履歴

ソースファイル

wp_nonce_field()wp-includes/functions.php にあります。

WordPress Nonce

Nonce関数: wp_explain_nonce() /en, wp_nonce_ays() /en, wp_nonce_field(), wp_nonce_url(), wp_verify_nonce(), wp_create_nonce() /en, check_admin_referer() /en, check_ajax_referer() /en, wp_referer_field() /en


外部リソース


関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: WordPress Codex » Function Reference/wp_nonce_field最新版との差分