Безопасное очищение URL с помощью функции esc_url_raw() в WordPress

ESC_URL_RAW() │ WP 2.8.0

Функция esc_url_raw() очищает URL для использования в базе данных, перенаправлениях и HTTP-запросах. Однако она не предназначена для безопасного отображения URL на экране.

Важно! Не используйте эту функцию, ес��и URL отображается в HTML-коде (например, на веб-странице). Вместо этого используйте функцию esc_url(), которая обрабатывает HTML-сущности и защищает от XSS-атак (вектор атак, позволяющий внедрять вредоносный код).

Функция esc_url_raw() является псевдонимом для функции sanitize_url().

Как используется esc_url_raw()

  • Время выполнения: 1 раз — 0.000071 сек (очень быстро) | 50000 раз — 1.60 сек (быстро)
  • Не имеет хуков.

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

Функция возвращает строку — очищенный URL. Если URL содержит протокол, который не указан в массиве $protocols, функция вернет пустую строку.

Использование

esc_url_raw( $url, $protocols );

Параметры:

  • $url (string) (обязательный) — URL, который нужно очистить.
  • $protocols (array) — массив допустимых протоколов. По умолчанию: http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed, telnet. Значение по умолчанию: null.

Примеры использования

Пример 1: Основное использование

echo esc_url_raw( '//example.com/foo?bar' ); // //example.com/foo?bar
echo esc_url_raw( '/example.com/foo?bar' );  // /example.com/foo?bar
echo esc_url_raw( '/example/foo?bar' );      // /example/foo?bar
echo esc_url_raw( '/' );                     // /

echo esc_url_raw( 123 );   // http://123
echo esc_url_raw( '123' ); // http://123

var_dump( esc_url_raw( '' ) );    // string(0) ""
var_dump( esc_url_raw( false ) ); // string(0) ""
var_dump( esc_url_raw( null ) );  // string(0) ""
var_dump( esc_url_raw( [] ) );    // string(0) ""

$url = 'http://example.com?foo=';
echo esc_url_raw( $url ); // http://example.com?foo=script/some/script
echo esc_url( $url );     // http://example.com?foo=script/some/script

Пример 2: Очистка URL для запроса

$url = 'http://example.com';
$response = wp_remote_get( esc_url_raw( $url ) );
if ( ! is_wp_error( $response ) ) {
    echo wp_remote_retrieve_body( $response );
}

Пример 3: Неправильное использование



Example

Примечания

  • Для очистки URL см. функцию sanitize_url().

История изменений

  • С версии 2.8.0 — введена.
  • С версии 6.1.0 — стала псевдонимом для функции sanitize_url().

Код функции

// wp-includes/formatting.php
function esc_url_raw( $url, $protocols = null ) {
    return sanitize_url( $url, $protocols );
}

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

  • esc_attr()
  • esc_html()
  • esc_js()
  • esc_sql()
  • esc_url()
  • И многие другие функции для очистки и валидации данных.

Используйте esc_url_raw() для поддержки безопасности вашего веб-сайта на WordPress, очищая URL и предотвращая возможные уязвимости!

Leave a Reply

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