Intereting Posts
Отладка «Объект класса WP_Query не может быть преобразован в ошибку int» the_excerpt (), get_the_excerpt () и the_content (), все убивающие "Loop" Размеры и порядок операций Название продукта Woocommerce Виртуальный хост и MAMP не работают с WordPress Категория как класс для пользовательского типа сообщения Есть ли способ через файл .htaccess добавить '' / amp 'в конец URL-адреса для сайта AMP? Как загрузить сообщение в пустой тег div в любом месте страницы? Как определить термин для пользовательской таксономии Перенаправить старые сообщения на новый без пули, но с теми же заголовками Должен ли is_active_sidebar () всегда использоваться вокруг dynamic_sidebar ()? Медиа-загрузчик не работает должным образом как удалить тире (-) статус сообщения из заголовка сообщения в сообщениях с листингом страницы wordpress Правило перезаписи не соответствует Как отключить плагин для определенной страницы?

wp_sanitize_redirect выдает знаки @ (даже из параметров) – почему?

На моем сайте WordPress у меня есть хак, который смотрит на uri и делает перенаправление на субдомен. Проблема состоит в том, что wp_redirect вызывает wp_sanitize_redirect, который будет вытеснять знаки @, поэтому, когда пользователь пытается загрузить что-то вроде

oursite.com?email=foo@bar.com

Загружаемая страница должна быть

prefix.oursite.com?email=foo@bar.com

но вместо этого

prefix.oursite.com?email=foobar.com (т. е. – нет знака @)

Проблему легко обойти – я просто вручную кодирую знаки @ как% 40 перед вызовом wp_redirect.

Вопрос: почему именно wp_sanitize_redirect вычеркивает @ знаки, точно? В любом случае любой может попытаться загрузить URL-адрес с помощью знака @ – есть ли проблема с безопасностью, о которой я не думаю?

EDIT: Функция, о которой я говорю, – wp_sanitize_redirect

Solutions Collecting From Web of "wp_sanitize_redirect выдает знаки @ (даже из параметров) – почему?"

Вопрос: почему именно wp_sanitize_redirect @ знаки? В любом случае любой может попытаться загрузить URL-адрес с помощью знака @ – есть ли проблема с безопасностью, о которой я не думаю?

Просто взгляните на источник:

 function wp_sanitize_redirect($location) { $location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!]|i', '', $location); $location = wp_kses_no_null($location); // remove %0d and %0a from location $strip = array('%0d', '%0a', '%0D', '%0A'); $location = _deep_replace($strip, $location); return $location; } 

Таким образом, единственные символы, preg_replace

  • нижний регистр az
  • чисел
  • и ~+_.?#=&;,/:%! ,

Что это значит для URI и URL-адресов?

Функция php urlencode() заменяет все альфа-числовые chararcters, кроме -_. с символом % (процентов), за которым следуют два шестнадцатеричных значения и пробелы с символом + . Если вы используете rawurlencode() , он также rawurlencode() + . Как вы можете видеть из preg_replace() , он позволяет все URL-кодированные / подготовленные символы, поэтому можно безопасно бросить в игру такие закодированные символы / URL-части.

Просто хотел следить за своими выводами. Это случилось со мной, если я оставил последний / в моих URL-адресах. Это привело к тому, что WP вызывал func: redirect_canonical, который удалял символы @. Когда я добавил последний /, он не вызывал эту функцию, и символ @ остался.

Хороший плагин для перенаправления перенаправления: Debug WP Redirect

Пример 1, который не выполняется:

Исходный URL: http://www.domain.com/somepage?email=me@me.com

Конечный URL: http://www.domain.com/somepage/?email=meme.com

Пример 2, который работает:

Исходный URL: http://www.domain.com/somepage/?email=me@me.com

Конечный URL: http://www.domain.com/somepage/?email=me@me.com