だから私はちょうどテーマ/プラグインのセキュリティについてこの素晴らしい WPSEスレッドを見つけました 。ほとんどの質問に答えましたが、新しいwp_editor()
関数が構築される前に作成されました。
私のテーマオプションには2つのTinyMCEエディタがあり、テーマオプションを保存する前にバリデーションコールバックでesc_html()
とesc_textarea()
のどちらを使う必要があるのか疑問に思います。私には、TinyMCEがそのことの大部分(およびその世話をするSettings APIセキュリティ)を担当しているようですが、wp_editor()
に関するドキュメントはそれほど多くありません。
任意のリソースと回答をいただければ幸いです。
esc_html()
とesc_textarea()
は、それらの名前にふさわしく、関数をエスケープし、実際にはサニタイズや検証よりも表示のためのものです。保存する前にwp_kses()
フィールドからの入力をサニタイズするためにwp_kses_post()
またはwp_kses()
(これはグローバル$allowedposttags
を持つwp_editor()
です)を使用します。
TinyMCEには、許可されたすべてのタグ用のフィルタがあります。あなたはタグを変更することができ、そこにあなたのオプションの標準で設定されており、エディタはタグをフィルタリングします。保存後にフィルタリングする必要はありません。
拡張タグの例
function fb_change_mce_options( $initArray ) {
// Comma separated string od extendes tags
// Command separated string of extended elements
$ext = 'pre[id|name|class|style],iframe[align|longdesc|name|width|height|frameborder|scrolling|marginheight|marginwidth|src]';
if ( isset( $initArray['extended_valid_elements'] ) ) {
$initArray['extended_valid_elements'] .= ',' . $ext;
} else {
$initArray['extended_valid_elements'] = $ext;
}
// set tiny paramter verify_html
$initArray['verify_html'] = true;
return $initArray;
}
add_filter( 'tiny_mce_before_init', 'fb_change_mce_options' );
タグをフィルタリングすることもできます。配列$initArray
内のすべてのタグが許可されます。配列からタグを削除するのは簡単です。 unset( $initArray['pre'] )
var_dump( $initArray );
を介して配列内の項目を読む
ベスト