Эта вещь делает мое кодирование трудным. Кодекс Wordpress обуславливает использование esc_url, расплывчато о безопасности. Но стоит ли это того?
Например, что является важным, практическим преимуществом безопасности при использовании
<?php echo esc_url( home_url( '/' ) ); ?>
вместо того
<?php echo home_url() ?>
PS: я говорю не о разработке темы, а о конкретном сайте.
home_url()
, если они используются в соответствующем контексте. Согласно этой рекомендации, я бы ожидалhome_url
провести собственную дезинфекцию.хорошо, весь пользовательский ввод должен быть очищен ... Если введенный вами URL-адрес не является пользовательским (например, настройка сайта кем-то, кому вы полностью доверяете, жестко закодированные значения), тогда вы можете избавиться от esc-url.
но если бы я мог внедрить этот URL на ваш сайт, я мог бы легко внедрить JS-код или код перенаправления ... или даже код на стороне сервера в некоторых ситуациях.
это может привести к перехвату сеанса, краже ваших учетных записей и другим плохим вариантам.
Редактировать:
В вашем примере
esc_url( home_url( '/' ) );
он работает с полужестким значением! поэтому
esc_url
может быть устранено.Тем не менее, я до сих пор не понимаю, зачем беспокоиться о различиях между тем, когда существует угроза, и тем, когда ее нет, и, как правило, предлагает сохранить esc_url () для каждого значения.
источник
Нужно иметь в виду еще
esc_url()
кое-что, например,<a href="SANITIZE_THIS_URL">your_text</a>
если вы собираетесь использовать URL-адрес в выводе HTML, например, атрибут href для ссылки или атрибут src для элемента изображения, который вы должны использоватьesc_url()
.esc_url_raw()
это для других случаев, когда вы хотите чистый URL, но вы не хотите, чтобы сущности HTML были закодированы. Таким образом, любое использование без HTML (DB, перенаправление) будет использовать это.esc_url_raw()
Функция будет делать почти так же , какesc_url()
, но это не будет расшифровывать сущности, означает , что он не заменит & с & # 038 и так далее. Как отметил Марк, безопасно использоватьesc_url_raw()
в запросах к базе данных, перенаправлениях и HTTP-функциях, таких как `wp_remote_get () ', для получения дополнительной информации о esc_url_raw ()источник
esc_url используется для создания корректного HTML (не для очистки ввода). Вы должны использовать это всякий раз, когда вы не уверены на 100%, что то, что вы хотите вывести, является допустимым HTML для этого контекста.
источник