Por que devo usar o esc_url?

8

Essa coisa dificulta minha codificação. O códice Wordpress raciocina sobre o uso de esc_url falando vagamente sobre segurança. Mas valerá a pena?

Por exemplo, qual é o benefício de segurança prático e importante usando

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

em vez de

<?php echo home_url() ?>

PS: Eu não estou falando sobre desenvolvimento de temas, mas sobre um site específico.

    
por IXN 12.09.2015 / 21:00

4 respostas

10

Se você verificar a documentação em Validação de dados , terá que dizer a respeito da função:

  

Sempre use esc_url ao sanear URLs (em nós de texto, nós de atributos ou em qualquer outro lugar). Rejeita URLs que não tenham um dos protocolos permitidos na lista de permissões, [...] elimina caracteres inválidos e remove caracteres perigosos.

Lá você tem - benefício prático de segurança. Protocolo válido, sem caracteres obscuros.

A resposta sobre a necessidade é firmemente sim . A saída de escape é a prática de segurança mais básica.

    
por Rarst 12.09.2015 / 22:33
2

Outras coisas devem ser mantidas em sua cabeça sobre esc_url() é para algo como <a href="SANITIZE_THIS_URL">your_text</a> .se você usar o URL em sua saída HTML, como um atributo href para um link ou um atributo src para um elemento image, use esc_url() . / p>

esc_url_raw() é para outros casos em que você deseja um URL limpo, mas não deseja que entidades HTML sejam codificadas. Assim, qualquer uso não-HTML (DB, redirecionamento) usaria isso.

A função esc_url_raw() fará praticamente o mesmo que esc_url() , mas não decodificará entidades, o que significa que não substituirá & com & # 038 e assim por diante. Como Mark assinalou, é seguro usar esc_url_raw() em consultas de banco de dados, redirecionamentos e funções HTTP, como 'wp_remote_get ()' para mais informações sobre esc_url_raw ()

    
por MD MUSA 12.09.2015 / 23:29
1

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.

    
por matthew 12.09.2015 / 21:11
1

bem, toda a entrada do usuário deve ser higienizada ... Se a url que você injetar não for entrada do usuário (por exemplo, configuração do site, por alguém em quem você confia!), Você poderá se livrar da esc-url.

mas se eu pudesse injetar esse URL no seu site, eu poderia facilmente injetar o código js, ou o código de redirecionamento ... ou mesmo código do lado do servidor em algumas situações.

isso pode levar ao seqüestro de sessão e ao roubo de contas de usuários.

por favor, reformate meu post.

    
por Tomer W 13.09.2015 / 09:19

Tags