WP_KSES_URI_ATTRIBUTES(): Введение, применение и примеры использования

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. Она позволяет фильтровать и очищать значения этих атрибутов, что делает ваш сайт более защищенным от потенциально опасных ссылок.

Leave a Reply

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