Display translated text that has been escaped for safe use in HTML output.
Contents
Description # Description
If there is no translation, or the text domain isn’t loaded, the original text is escaped and displayed.
If you need the value for use in PHP, use esc_html__().
Parameters # Parameters
( string ) (Required) Text to translate.
( string ) (Optional) Text domain. Unique identifier for retrieving translated strings.
Default value: ‘default’
Source # Source
Related # Related
Uses # Uses
Escaping for HTML blocks.
Used By # Used By
Print the skip-link script & styles.
Displays the next steps column.
Render form template scripts.
Renders a JS template for the content of date time control.
Render form template scripts.
Render form template scripts.
Render form template scripts.
Prints the necessary markup for the embed sharing dialog.
Render JS templates for all registered control types.
Print JavaScript templates required for the revisions experience.
Override parent views so we can use the filter bar display.
Prints step 1 for Network installation process.
Prints step 2 for Network installation process.
Loads the WP image-editing interface.
Prints the templates used in the media manager.
Changelog # Changelog
User Contributed Notes # User Contributed Notes
Escape & Echo (Display) the translated text.
You must log in before being able to contribute a note or feedback.
WordPress: безопасность вывода данных
Безопасность вывода данных — это процесс замены небезопасных данных на безопасные.
Под заменой, я подразумеваю чистку данных от HTML и скрипт тэгов.
Когда вы отображаете какие-либо данные, важно их сделать безопасными для отображения. Иначе, при выводе вы можете получить, например, XSS (Cross-site scripting). Когда при загрузке страницы, у вас может запускаться JavaScript, который может перенаправлять пользователей на другую страницу — не самый лучший сценарий.
Замена
Замена помогает вашей информации отображаться безопасно конечному пользователю. У WordPress есть множество функций помощников для таких задач.
Большинство функции в WordPress заранее чистят выводимые данные, тем самым вам не нужно делать это повторно. Например, вы можете безопасно использовать функцию the_title().
Чистка и перевод
Вместо того, что использовать echo для вывода данных, в WordPress чаще всего используется специальные функции для локализации такие как _e() и __().
Эти функции обертывают функции локализации, дополнительно добавляя безопасность (чистят данные):
Функции представленные ниже комбинируют локализацию и чистку данных:
Собственная чистка
Если вам нужно создать собственный фильтр, тогда функция wp_kses() (произносится как «кисес») — это ваше решение.
Эта функция проверяет и заменяет HTML элементы, атрибуты и значения атрибутов, а так же нормализует HTML.
Какая разница между esc_html, esc_attr, esc_html_e, _e() и другими?
Уже давно не давал мне покоя вопрос в чем разница между функциями _e() и esc_html_e… Но я везде использовал _e() и не парился, пока не столкнулся с необходимостью использовать в шаблоне esc_html_e(), тогда то и пришлось разбираться что к чему.
Все данные взяты из документации wp-includes/l10.php.
Собственно разберемся как работают функции, которые используются для локализации в CMS WordPress.
_e() – функция локализации для перевода строки,
‘Close menu’ – строка для перевода,
‘dc’ – домен (идентификатор) по которому получаем перевод.
На выходе мы получим фразу Close menu или ее перевод, если локализация настроена на сайте.
Функция __()
Функция возвращает результат перевода строки.
Если в строке будут html-теги, то в переводе они останутся без изменения.
Результат на фронте:
Функция esc_attr__()
Функция esc_attr() предназначена для фильтрации строки, которую планируется выводить в значениях html атрибутов.
Кодирует & » ‘ (больше, меньше, амперсанд, кавычки двойные и одинарные). Не создает двойного преобразования.
Можно использовать в качестве фильтра выводимых данных для полей формы:
Если в строке будут символы & » ‘ то они будут преобразованы в:
В исходном коде получим:
А в браузере символы отобразятся в соответствии с кодировкой:
WordPress.org
Escaping for HTML blocks.
Contents
Parameters # Parameters
Return # Return
Source # Source
Related # Related
Uses # Uses
Filters a string cleaned and escaped for output in HTML.
Checks for invalid UTF8 in a string.
Converts a number of special characters into their HTML entities.
Calls the callback functions that have been added to a filter hook.
Displays a form to the user to request for their FTP/SSH details in order to connect to the filesystem.
Outputs the hidden row displayed when inline editing
Show the widgets and their settings for a sidebar.
Meta widget used to display the control form for a widget.
Retrieve the link to a contributor’s WordPress.org profile page.
Retrieve the link to an external library used in WordPress.
Display first step of custom header image page.
Echoes the stats of the caching.
Generates a tag cloud (heatmap) from provided data.
Display translated text that has been escaped for safe use in HTML output.
Translate string with gettext context, and escapes it for safe use in HTML output.
Sanitises various option values based on the nature of the option.
Callback function used by preg_replace.
Provides a simple login form for use anywhere within WordPress.
Legacy escaping for HTML blocks.
Display the post content for the feed.
Mark up a theme header.
Gives a nicely-formatted list of timezone strings.
Retrieve URL with nonce added to URL query.
Returns an array containing the current upload directory’s path and URL.
Outputs the settings form for the Navigation Menu widget.
Outputs the Tag Cloud widget settings form.
Outputs the content for the current RSS widget instance.
Outputs the content for the current Archives widget instance.
Outputs the settings form for the Links widget.
Display the RSS entries in a list.
Conditionally makes a hyperlink based on an internal class variable.
Cleanse the field value in the term based on the context.
Check WordPress version against the newest version.
Converts a data object from WP_oEmbed::fetch() and returns the HTML.
Add the “Site Name” menu.
Protects WordPress special option from being modified.
Create dropdown HTML content of users.
Sanitize user field based on context.
Starts the element output.
Retrieve an attachment page link using an image or icon, if possible.
Builds the Video shortcode output.
Builds the Audio shortcode output.
Notify a user that their account activation has been successful.
Notifies the site administrator that their site activation was successful.
Send a confirmation request email to a user when they sign up for a new site. The new site will not become active until the confirmation link is clicked.
Send a confirmation request email to a user when they sign up for a new user account (without signing up for a site at the same time). The user account will not become active until the confirmation link is clicked.
Sanitizes a bookmark field.
Save the properties of a menu or create a new menu with those properties.
Display all RSS items in a HTML ordered list.
Display RSS items in HTML list items.
Retrieves a pingback and registers it.
Retrieve the list of categories on a given blog.
Get list of all tags
Render the control’s content.
Retrieve description for widget.
Retrieves HTML content for cancel comment reply link.
Returns the HTML email link to the author of the current comment.
Displays the IP address of the author of the current comment.
Renders the widget form control templates into the DOM.
Performs post queries for internal linking.
Prints the templates used in the media manager.
Changelog # Changelog
User Contributed Notes # User Contributed Notes
Examples
$html now contains this:
which would be displayed in an HTML document as:
Instead of like this:
Note that esc_html will attempt to avoid double-encoding. Take this code:
After using esc_html() on your example string you would have:
You must log in before being able to contribute a note or feedback.
Очистка и проверка данных с помощью WordPress
Надлежащая безопасность имеет решающее значение для обеспечения безопасности вашего сайта или вашей темы или пользователей плагинов. Часть этого означает соответствующую проверку данных и их дезинфекцию. В этой статье мы рассмотрим, почему это важно, что нужно сделать и какие функции WordPress предоставляет для помощи.
Поскольку, как представляется, существуют различные толкования того, что означают термины «проверка», «избежание» и «санитарная обработка», я сначала поясню, что я имею в виду под ними в этой статье:
Почему санитарная обработка важна?
Когда данные включены в некоторый контекст (скажем, в документ HTML) — эти данные могут быть неверно истолкованы как код для этой среды (например, код HTML). Если эти данные содержат вредоносный код, то использование этих данных без их очистки означает, что код будет выполнен. Код даже не обязательно должен быть вредоносным, чтобы вызвать нежелательные последствия. Работа по санации заключается в том, чтобы убедиться, что любой код в данных не интерпретируется как код, иначе вы можете оказаться в школе Бобби Таблиц …
То, как этот вредоносный (или иным образом) код попал на ваш сайт, не является проблемой, а скорее препятствует его выполнению. Мы также не делаем предположений о природе этого нежелательного кода или его намерениях — это могло быть просто ошибкой со стороны пользователя. Это подводит меня к правилу № 1 …
Правило № 1: никому не доверяй
Это общий принцип, который используется в отношении очистки данных, и он хороший. Идея заключается в том, что вы не должны предполагать, что любые данные, введенные пользователем, в безопасности. Также вы не должны предполагать, что данные, которые вы извлекли из базы данных, безопасны — даже если вы сделали их «безопасными» до того, как вставить их туда. На самом деле, можно ли считать данные «безопасными» без контекста. Иногда одни и те же данные могут использоваться в нескольких контекстах на одной странице. Например, заголовки могут безопасно содержать кавычки или двойные кавычки внутри тегов заголовка, но будут вызывать проблемы при использовании (без экранирования) внутри атрибута заголовка тега ссылки. Поэтому бессмысленно делать данные «безопасными» при добавлении их в базу данных, поскольку зачастую невозможно сделать данные безопасными одновременно для всех контекстов. (Конечно, его необходимо добавить в базу данных, но мы вернемся к этому позже).
Даже если вы намереваетесь использовать эти данные только в одном конкретном контексте, например, в форме, очищать данные при записи в базу данных по-прежнему бессмысленно, поскольку, согласно правилу № 1, вы не можете полагать, что они все еще безопасны, когда вы убери это снова.
Правило № 2: проверка на входе, выход на выходе
Это процедурный принцип, который устанавливает, когда вам следует проверять данные и когда вы их дезинфицируете. Проще говоря — проверьте ваши данные (проверьте, что это должно быть — и что это «действительный»), как только вы получите их от пользователя. Когда вы начинаете использовать эти данные, например, когда вы выводите их, вам нужно их экранировать (или дезинфицировать). В какой форме происходит эта дезинфекция, полностью зависит от контекста, в котором вы ее используете.
Лучший совет — выполнить это «поздно»: экранируйте свои данные непосредственно перед тем, как использовать или отображать их. Таким образом, вы можете быть уверены, что ваши данные были должным образом очищены, и вам не нужно помнить, проверялись ли ранее данные.
Правило № 3: Доверьтесь WordPress
В предыдущей статье я взял пользовательский ввод (отправленный из формы поиска через AJAX) и использовал его напрямую с get_posts() чтобы возвращать посты, соответствующие этому поисковому запросу: