WP_KSES_URI_ATTRIBUTES() │ WP 5.0.1
Введение
Функция WP_KSES_URI_ATTRIBUTES() помогает работать с HTML-атрибутами, которые содержат URL. Она возвращает список атрибутов HTML, которые должны иметь URL-ссылки, согласно спецификации HTML. Этот список включает как разрешенные, так и запрещенные атрибуты, согласно стандартам безопасности WordPress.
Принцип работы
Время выполнения
- 1 раз — 0.000001 сек (световая скорость)
- 50000 раз — 0.10 сек (световая скорость)
Версия PHP
PHP 7.2.5, WP 5.0.1
Хуки функции
Функция использует хук wp_kses_uri_attributes, который позволяет изменять список атрибутов.
Возврат значения
Функция возвращает массив строк — имена HTML-атрибутов, значения которых должны содержать URL.
Применение
Чтобы использовать функцию, просто вызовите ее:
$uris = wp_kses_uri_attributes();
Примеры использования
Пример 1: Что возвращает функция
$uris = wp_kses_uri_attributes();
/* $uris =
Array
(
[0] => action
[1] => archive
[2] => background
[3] => cite
[4] => classid
[5] => codebase
[6] => data
[7] => formaction
[8] => href
[9] => icon
[10] => longdesc
[11] => manifest
[12] => poster
[13] => profile
[14] => src
[15] => usemap
[16] => xmlns
)
*/
Пример 2: Очистка значения атрибута с URL
Следующий пример показывает, как очистить значение атрибута, в котором должен быть указан URL. Это логика, используемая для очистки значений в WordPress KSES:
$uris = wp_kses_uri_attributes();
$allowed_protocols = wp_allowed_protocols();
$attrname = 'href';
$thisval = 'http://example.com';
if (in_array(strtolower($attrname), $uris)) {
$thisval = wp_kses_bad_protocol($thisval, $allowed_protocols);
}
// Если $thisval = 'foo://example.com'
echo $thisval; //> //example.com
// Если $thisval = 'http://example.com'
echo $thisval; //> http://example.com
История изменений
- С версии 5.0.1: В функции была добавлена возможность расширения списка атрибутов.
Код функции
Вот как выглядит код функции wp_kses_uri_attributes():
function wp_kses_uri_attributes() {
$uri_attributes = array(
'action',
'archive',
'background',
'cite',
'classid',
'codebase',
'data',
'formaction',
'href',
'icon',
'longdesc',
'manifest',
'poster',
'profile',
'src',
'usemap',
'xmlns',
);
/**
* Фильтрует список атрибутов, которые должны содержать URL.
*
* Используйте этот фильтр для добавления любых атрибутов data-,
* которые необходимо проверить как URL.
*
* @since 5.0.1
*
* @param string[] $uri_attributes Имена HTML-атрибутов, значения которых содержат URL.
*/
$uri_attributes = apply_filters('wp_kses_uri_attributes', $uri_attributes);
return $uri_attributes;
}
Заключение
Функция wp_kses_uri_attributes() обеспечивает безопасность при работе с HTML-атрибутами, содержащими URL. Она позволяет фильтровать и очищать значения этих атрибутов, что делает ваш сайт более защищенным от потенциально опасных ссылок.