web-dev-qa-db-ja.com

テーマ設定で管理者によって入力されたカスタムJavaScriptおよびCssコードを出力する最も安全な方法は何ですか?

私は、管理者が「テーマ設定」ページ(オプションAPIを使用して作成)にカスタムのJavascriptおよびCssコードを入力するためのオプションを作成したテーマを作成しています。

今、私はちょうどこのコードを最善の方法で出力する方法がわからないだけです。 Cssの場合はwp_add_inline_style()を使用してcssファイルを更新することにし、JavaScriptの場合はwp_footer()タグの前のコードをエコーアウトします。

if ( $custom_js != '' ) { ?>
  <script id="theme-custom-js">
    <?php echo $custom_js; ?>
  </script>
<?php }
<?php wp_footer(); ?>

これらはすべてうまくいきますが、ファイルにCSSを追加する前やユーザーが入力した内容をエコーアウトする前に、エスケープ関数を使用する必要があるかどうかはわかりません。

私はesc_htmlesc_jsおよびwp_json_encodeを試しましたが、明らかにこれらは反対のことをすることを意図しています。

コードはおそらく管理者から来ているので安全であるべきだと私は理解していますが、それは私がテーマを通して極端な対策を講じ、エコーアウトされる直前にほとんどすべてを逃がそうとしたことだけです。だから私はこれをどうにかして同じようにしなければならない気がします。

これについて教えてください、そしてどうもありがとうございました。

2
user1981248

ユーザーにコードの制御を許可することは、明示的に危険な操作です。ご存知のとおり、サニタイズの目的はnotです。

実行可能コードを「サニタイズ」するには、安全なものとそうでないものを区別するためのプログラムによる理解(コードパーサー)と基準エンジンが必要です。そのような要求に対しては理想的です。

ネイティブWordPressでは、管理者は投稿コンテンツにJavaScriptを使用できます。時々人々はそれを「恐ろしいセキュリティの脆弱性」と報告していますが、実際にはそれは単なる信頼関係の問題です - 実行可能コードを入力するために他のユーザを信頼します。この場合、基本的には根拠がありませんし、「そのコードではありません」ということもありません。

2
Rarst