Почему я должен использовать esc_url?

Эта вещь затрудняет мое кодирование. Wordpress codex объясняет использование esc_url, говоря неопределенно о безопасности. Но действительно ли это стоит того?

Например, какое важное и практическое преимущество в плане безопасности достигается с помощью

<?php echo esc_url( home_url( '/' ) ); ?>

вместо

<?php echo home_url() ?>

PS: Я не говорю о разработке темы, а о конкретном сайте.

7 голосов | спросил IXN 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 12 Sep 2015 22:00:12 +0300 2015, 22:00:12

4 ответа


9

Если вы проверяете документацию на Проверка данных , она может сказать о функции:

  

Всегда используйте esc_url при дезинфекции URL-адресов (в текстовых узлах, узлах атрибутов или в другом месте). Отклоняет URL-адреса, у которых нет одного из предоставленных белых списков протоколов [...], исключает недопустимые символы и удаляет опасные символы.

Там у вас есть - практическая безопасность. Действительный протокол, не мутные символы.

Ответ о необходимости прочно да . Выход из строя - самая простая практика безопасности.

ответил Rarst 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 12 Sep 2015 23:33:10 +0300 2015, 23:33:10
2

Еще одна вещь должна быть в твоей голове о esc_url() для чего-то вроде <a href="SANITIZE_THIS_URL">your_text</a> .if вы собираетесь использовать URL-адрес в своем HTML-выводе, например атрибут href для ссылки, или атрибут src для элемента изображения, вы должны использовать esc_url()

esc_url_raw() предназначен для других случаев, когда требуется чистый URL-адрес, но вы не хотите, чтобы объекты HTML были закодированы. Поэтому любое использование не-HTML (DB, redirect) будет использовать это.

Функция esc_url_raw() будет делать почти то же самое, что и esc_url(), но он не будет декодировать объекты, то есть он не заменит & с & # 038 и т. д. Как отметил Марк, безопасно использовать esc_url_raw() в запросах базы данных, перенаправлениях и HTTP-функциях, таких как `wp_remote_get () ' для получения дополнительной информации о esc_url_raw ()

ответил MD MUSA 13 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 13 Sep 2015 00:29:11 +0300 2015, 00:29:11
1

esc_url используется для создания допустимого HTML (не для дезинфекции ввода). Вы должны использовать это в любое время, когда вы не на 100% уверены, что то, что вы хотите вывести, является допустимым HTML для этого контекста.

ответил matthew 12 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 12 Sep 2015 22:11:13 +0300 2015, 22:11:13
1

ну, все входные данные пользователя должны быть дезинфицированы ... Если URL-адрес, который вы вводите, не является пользователем (например, настройкой сайта, кем-то, кому вы доверяете!), Тогда вы можете освободиться от esc-url.

, но если бы я мог вставить этот URL-адрес на ваш сайт, я мог бы легко ввести код js или код перенаправления ... или даже код на стороне сервера в некоторых ситуациях.

это может привести к захвату сеанса и украденным учетным записям пользователей.

Пожалуйста, переформатируйте мой пост.

ответил Tomer W 13 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 13 Sep 2015 10:19:58 +0300 2015, 10:19:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132