Функция esc_html() в WordPress: защита от HTML-атак

Функция esc_html() в WordPress

Что такое esc_html()?

Функция esc_html() была добавлена в WordPress в версии 2.8.0. Она предназначена для защиты текстовых данных при выводе на веб-страницах. Эта функция преобразует специальные символы, такие как <, >, &, ", и ', в HTML-сущности. Это важно для предотвращения ошибок и атак на сайт, связанных с HTML-кодом.

Замена символов:

Символ Сущность
& &
" "
' '
< <
> >

Корректировка кодировки UTF-8

esc_html() также проверяет текст на корректность кодировки UTF-8 и, если возможно, исправляет её. Если вам нужно, наоборот, декодировать текст из HTML-сущностей обратно в символы, используйте функцию wp_specialchars_decode().

Как использовать esc_html()?

Если вы передадите массив в esc_html(), он будет преобразован в строку. Например:

$arr = array( 5, 6 );
$arr = esc_html( $arr ); // $arr будет строкой "Array"

Функция основана на htmlspecialchars() и изменяет её параметры по умолчанию, чтобы избежать двойного кодирования. Например:

echo esc_html( '& - &' );         // результат: & - &
echo htmlspecialchars( '& - &' ); // результат: & - &amp;

Примечание

Функция esc_html() является заменой устаревшей функции wp_specialchars().

Применение функции

Синтаксис

esc_html( $text );
  • $text (строка) — текст для преобразования, который является обязательным.

Пример

Вот простой пример использования функции:

$text = "

Это "имеет смысл" & 'имеет смысл'!

"; echo esc_html( $text ); /* результат: <p><b> Это "имеет смысл" & 'имеет смысл'!</b></p> */

Возвращаемое значение

Функция esc_html() возвращает строку — преобразованный текст.

Время выполнения функции

Функция очень быстрая:

  • 1 выполнение — 0.000037 сек (очень быстро)
  • 50,000 раз — 0.27 сек (очень быстро)
  • Тестировалось на PHP 7.0.2, WP 4.4.1

Связанные функции

Функция esc_html() является частью группы функций, предназначенных для очистки и экранирования данных. Вот некоторые из них:

  • esc_attr() — экранирование для атрибутов HTML.
  • esc_js() — экранирование для JavaScript.
  • esc_sql() — экранирование для SQL-запросов.
  • esc_url() — экранирование для URL-адресов.

Заключение

Использование esc_html() помогает защитить ваш сайт от ошибок и уязвимостей, связанных с неправильной обработкой HTML-символов. Она делает вывод данных более безопасным и надежным.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *