Intereting Posts
Многоуровневый архив Добавление JS на одну страницу Отображение тегов темы bbpress в списке Как вставлять скрипты на пользовательские сообщения, добавлять / редактировать страницы? Показывать комментарии во всплывающем окне Почему минимальная защита защищена? доступ к родительским переменным в дочерней конструкции без выполнения действий в родительском Переупорядочивать сообщения в цикле: иметь сообщения одного конкретного автора ниже других Как создать пользовательскую страницу в WordPress? Могу ли я перенести базу данных mysql на другой сайт? Захват действия wp_trash_post с пользовательским типом сообщения Одностраничные приложения с WordPress: маршруты и шаблоны Seach и категории, не работающие при игнорировании липких сообщений в основном контуре the_content () не отображает содержимое, почему? Определение слизи до и после редактирования

Обтекание add_query_arg с esc_url не работает

Я знаю о проблеме XSS, связанной с add_query_arg() . Вот почему я обертываю его esc_url() .

Проблема в том, что это не работает с wp_remote_get() .

Если я пойду:

 $url = add_query_arg( array( 'email' => 'myadress@mail.com', 'token' => '899A762614F6C49809A374FB955EC8C15'), 'https://example.com/v3/transactions/notifications/3FF732-68B436B43622-3664083FB82B-CFB043' ); $response = wp_remote_get( $url ); 

Я получаю действительный ответ тела.

Но если я использую esc_url для $url :

 $url = esc_url(add_query_arg( array( 'email' => 'myadress@mail.com', 'token' => '899A762614F6C49809A374FB955EC8C15'), 'https://example.com/v3/transactions/notifications/3FF732-68B436B43622-3664083FB82B-CFB043' )); $response = wp_remote_get( $url ); 

Ответ тела – «Несанкционированный».

И странная часть: оба кода повторяют одну и ту же строку для $ url !!!

Что теперь?

И странная часть: оба кода повторяют одну и ту же строку для $ url !!!

Нет, они этого не делают. Посмотрите на источник страницы. esc_url() кодирует символ & control. Вы не можете этого сделать и ожидаете, что HTTP-запрос будет работать правильно.

esc_url_raw() этого используйте esc_url_raw() . Обратите внимание на описание в Codex относительно этой функции:

Функция esc_url_raw () похожа на esc_url () (и фактически использует ее), но в отличие от esc_url () она не заменяет объекты для отображения. Полученный URL-адрес безопасен для использования в запросах базы данных, перенаправлениях и HTTP-запросах .
https://codex.wordpress.org/Function_Reference/esc_url_raw