Eu recebi feedback do cara da segurança e ele apontou que eu deveria usar o escape adequado da entrada do usuário no meu código. Então, eu fiz algumas pesquisas e encontrei funções de escape.
Qual a diferença entre eles? Quando devo usar esc_html()
e quando esc_attr()
? E quando devo usar essas funções _e()
no final?
Respostas:
esc_html()
escapa uma string para que não seja analisada como HTML. Caracteres como<
são convertidos em<
, por exemplo. Isso parecerá o mesmo para o leitor, mas significa que, se o valor que está sendo produzido for<script>
, ele não será interpretado pelo navegador como uma tag de script real.Use esta função sempre que o valor que está sendo produzido não deva conter HTML.
esc_attr()
escapa uma string para que seja seguro usá-lo em um atributo HTML, comoclass=""
por exemplo. Isso evita que um valor se quebre do atributo HTML. Por exemplo, se o valor for"><script>alert();</script>
e você tentar produzi-lo em um atributo HTML, ele fechará a tag HTML atual e abrirá uma tag de script. Isso não é seguro. Ao escapar do valor, não será possível fechar o atributo HTML, marcar e gerar HTML inseguro.Use esta função ao gerar um valor dentro de um atributo HTML.
esc_url()
escapa uma string para garantir que seja um URL válido.Use esta função ao gerar um valor dentro de um atributo
href=""
ousrc=""
.esc_textarea()
escapa um valor para que seja seguro usá-lo em um<textarea>
elemento. Ao escapar de um valor com essa função, ele impede que um valor que está sendo produzido dentro<textarea<
de a feche o<textarea>
elemento e produza seu próprio HTML.Use esta função ao gerar um valor dentro de um
<textarea>
elemento.esc_html()
eesc_attr()
também tem versões terminadas em__()
,_e()
e_x()
. Estes são para saída de strings traduzíveis.WordPress tem funções,
__()
,_e()
e_x()
, para a saída de texto que pode ser traduzido.__()
retorna uma sequência traduzível,_e()
ecoa uma sequência traduzível e_x()
retorna uma sequência traduzível com um determinado contexto. Você provavelmente já os viu antes.Como você não pode necessariamente confiar que um arquivo de conversão contenha valores seguros, o uso dessas funções ao gerar uma sequência traduzível garante que as sequências que estão sendo produzidas não possam causar o mesmo problema descrito acima.
Use essas funções ao emitir strings traduzíveis.
fonte
esc_html
eesc_attr
, o mesmo código é utilizado (eles só têm um filtro não utilizado diferente): wordpress.stackexchange.com/questions/264698/...esc_html
seria usado dentro do html, por exemplo, entre uma<p>
tagesc_attr
seria usado para escapar dos valores de atributo nas tags html da seguinte forma:aplicar
_e
para o final é para usá-lo com domínios de texto e ecoá-lo automaticamente para você, por exemplo:Além de
_e
, também existe o__
que faz o mesmo que_e
mas não o ecoa para que você possa armazená-lo em uma variável.fonte
_e
não é apenas para ecoar, é para localização. Portanto, ele deve ser usado apenas quando uma string é passada para a função e deve incluir um domínio de texto. Seu último exemplo está fazendo mau uso.