たとえば、属性タグの中にWordPressの値を入れる場合、次のメソッドはesc_attr
を必要としません。
例えば.
// JS code
alert('<?php echo get_bloginfo('name');?>');
次のメソッドはesc_attr
が必要です
// JS code
alert('<?php echo esc_attr($post->post_title);?>');
慣例は何ですか?
<>& "'(小なり、大なり、アンパサンド、二重引用符、一重引用符)をエンコードします。エンティティを二重エンコードすることはありません。
これらの文字列はどちらもサニタイズが必要です 。 >> "My" Website's Great Title <<"
のようなサイト名を想像してください
また、Javascriptでこれを使っているので、おそらく代わりに esc_js
を使うべきです。
規約は、「マークアップがどのように機能するのか、悪意のあるハッカーがどのように機能するのかを理解し、それに従って行動する」というものです。それが、あなたがこれらの機能の使い方を知っている方法です。また、 誰も信頼しない 。
私たちのメンバーからのこの記事も参照してください Stephen Harris : WordPressによるデータのサニタイズと検証
HTML属性に含めることを意図したものを出力するときは、esc_attr()
を使用します。
あなたのケースでは、あなたはesc_js()
、あるいはおそらくjson_encode()
を使うべきです。
投稿のタイトルに一重引用符が含まれている場合あなたのコードの出力は
警戒( 'それは悪い');
つまり、あなたのJavaScriptコードを破ると、あなたは「予期しない識別子」を得るでしょう。 esc_attr を使用すると、出力は次のようになります。
警戒( 'それは悪い');
投稿タイトルは文字列内で機能するようにエンコードされます。