Essa coisa dificulta minha codificação. O codex do Wordpress justifica o uso do esc_url falando vagamente sobre segurança. Mas vale realmente a pena?
Por exemplo, qual é o importante e prático benefício de segurança usando
<?php echo esc_url( home_url( '/' ) ); ?>
ao invés de
<?php echo home_url() ?>
PS: Não estou falando sobre desenvolvimento de temas, mas sobre um site específico.
home_url()
, se usadas em seu contexto apropriado. De acordo com essa recomendação, eu esperavahome_url
realizar sua própria higienização.bem, todas as entradas do usuário devem ser higienizadas ... Se o URL que você injeta não for do usuário (por exemplo, configuração do site por alguém em quem você confia totalmente, valores codificados), você pode se livrar do esc-url.
mas se eu pudesse injetar esse URL no seu site, poderia injetar facilmente o código js ou o código de redirecionamento ... ou mesmo o código do servidor em algumas situações.
isso pode levar ao seqüestro de sessões e ao roubo de contas de usuários e outras opções ruins.
Editar:
No seu exemplo,
esc_url( home_url( '/' ) );
ele operou com um valor semi-codificado! portanto,
esc_url
pode ser eliminado.Dito isto, ainda não vejo por que incomodar as distinções entre quando existe uma ameaça e quando não existe e geralmente sugeriria manter esc_url () para todos os valores.
fonte
Outras coisas que você deve ter em mente
esc_url()
são:<a href="SANITIZE_THIS_URL">your_text</a>
.se você usar o URL na saída HTML, como um atributo href para um link ou um atributo src para um elemento de imagem, você deve usaresc_url()
.esc_url_raw()
é para outros casos em que você deseja um URL limpo, mas não deseja que as entidades HTML sejam codificadas. Portanto, qualquer uso não HTML (DB, redirecionamento) usaria isso.A
esc_url_raw()
função fará o mesmoesc_url()
, mas não decodificará as entidades, o que significa que não substituirá & por & # 038 e assim por diante. Como Mark apontou, é seguro usaresc_url_raw()
em consultas de banco de dados, redirecionamentos e funções HTTP, como `wp_remote_get () 'para obter mais informações sobre esc_url_raw ()fonte
esc_url é usado para produzir um HTML válido (não para limpar a entrada). Você deve usar isso sempre que não tiver 100% de certeza de que o que deseja gerar é um HTML válido para esse contexto.
fonte