web-dev-qa-db-ja.com

WordPressの内部関数を使用するときにesc_attrを使用する必要があるのはいつですか。

たとえば、属性タグの中にWordPressの値を入れる場合、次のメソッドはesc_attrを必要としません。

例えば.

// JS code
alert('<?php echo get_bloginfo('name');?>');

次のメソッドはesc_attrが必要です

// JS code
alert('<?php echo esc_attr($post->post_title);?>');

慣例は何ですか?

4
Howard

コーデックスを見ることができます

<>& "'(小なり、大なり、アンパサンド、二重引用符、一重引用符)をエンコードします。エンティティを二重エンコードすることはありません。

これらの文字列はどちらもサニタイズが必要です>> "My" Website's Great Title <<"のようなサイト名を想像してください

また、Javascriptでこれを使っているので、おそらく代わりに esc_js を使うべきです。

規約は、「マークアップがどのように機能するのか、悪意のあるハッカーがどのように機能するのかを理解し、それに従って行動する」というものです。それが、あなたがこれらの機能の使い方を知っている方法です。また、 誰も信頼しない

私たちのメンバーからのこの記事も参照してください Stephen HarrisWordPressによるデータのサニタイズと検証

5
s_ha_dum

HTML属性に含めることを意図したものを出力するときは、esc_attr()を使用します。

あなたのケースでは、あなたはesc_js()、あるいはおそらくjson_encode()を使うべきです。

1
Otto

投稿のタイトルに一重引用符が含まれている場合あなたのコードの出力は

警戒( 'それは悪い');

つまり、あなたのJavaScriptコードを破ると、あなたは「予期しない識別子」を得るでしょう。 esc_attr を使用すると、出力は次のようになります。

警戒( 'それは悪い');

投稿タイトルは文字列内で機能するようにエンコードされます。

0
M-R