Когда мне нужно использовать esc attr при использовании внутренних функций WordPress


Когда я помещаю значение WordPress в тег атрибута, например, следующий метод не требует esc_attr

Например,

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

Следующий метод действительно требует esc_attr

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

Какое соглашение используется?

Author: fuxia, 2012-12-10

3 answers

Вы можете взглянуть на Кодекс.

Кодирует & "' (меньше, больше, амперсанд, двойная кавычка, одинарная кавычка). Никогда не будет дважды кодировать сущности.

Учитывая, что, возможно, обе эти строки нуждаются в очистке. Представьте себе название сайта, например >> "My" Website's Great Title <<"

Кроме того, поскольку вы используете это в Javascript, вам, вероятно, следует использовать esc_js вместо этого.

Соглашение гласит: "поймите, как работает разметка и как злонамеренные хакеры работают и действуют соответственно". Вот как вы знаете, как использовать эти функции. Кроме того, Никому не доверяй.

Смотрите также эту статью нашего участника Стивена Харриса: Очистка и проверка данных С помощью WordPress

 5
Author: s_ha_dum, 2017-04-13 12:37:39

Вы используете esc_attr(), когда выводите что-то, что должно быть в атрибуте HTML.

В вашем случае вы должны использовать esc_js() или, возможно, json_encode() вместо этого.

 1
Author: Otto, 2012-12-10 16:06:46

Если в названии вашего поста есть одинарная кавычка. Вывод вашего кода будет

Предупреждение ("Это плохо");

То есть, нарушив ваш код JavaScript, вы получите "Неожиданный идентификатор". При использовании esc_attr вывод будет

Предупреждение ("Это плохо");

Заголовок сообщения будет закодирован таким образом, чтобы он работал в строках.

 0
Author: M-R, 2012-12-10 14:40:24