Qual é a diferença exata entre esc_html
e attribute_escape
filter?
esc_html()
usos esc_html filter
e esc_attr()
usos attribute_escape filter
. Ambos codificam <> & "'(menor que, maior que, comercial, aspas duplas, aspas simples).
Estou interessado em saber o que exatamente os torna diferentes em termos de segurança (escapando).
esc_attr
queesc_html
não serve seria útil, afinal, por que não usar emesc_html
todos os lugares? Se é óbvio para você pode não parecer uma boa pergunta, mas não é óbvio para o consulente como essas 2 funções são diferentes dado que ambos escapar os caracteres esperadosRespostas:
Parece que fora da caixa, não há diferença
A única diferença entre as 2 funções é o filtro aplicado no final. O WordPress não adiciona nada a esses filtros; portanto, em uma instalação padrão do WP, eles não são operacionais. Eles são fornecidos no caso extremo de que alguém possa precisar deles.
Perguntas e Respostas Rápidas
Então, por padrão, eles são idênticos?
Sim! As funções
esc_attr
eesc_html
têm a mesma implementaçãoOs filtros são idênticos?
A única diferença é que eles têm nomes diferentes, funcionam da mesma maneira, são usados da mesma maneira e nenhum filtro é usado no núcleo.
Os filtros fazem alguma coisa?
Não! Todo o escape é feito na função quando
wp_check_invalid_utf8
e_wp_specialchars
é chamado.Os filtros não escapam, são uma oportunidade para os plug-ins fazerem verificações e processamento adicionais.
Existem casos extremos?
Somente se você usar os filtros, diga que está conectado,
esc_html
mas nãoattribute_escape
ou vice-versa. Para uma instalação padrão do WP, as 2 funções são idênticas, sem diferença.Por que
attribute_escape
e nãoesc_attr
?Compatibilidade com versões anteriores. Costumava haver uma
attribute_escape
função, que agora é marcada como obsoleta após aesc_
adição das funções de estilo.Por que eu usaria esses filtros?
¯\_(ツ)_/¯
isso seria uma situação rara. Algumas pessoas podem abusar da mesma forma que as APIs de tradução são abusadas para pesquisar substituir texto. Isso já é uma prática ruim, pois esses filtros são chamados muito, uma pequena perda de velocidade é ampliada milhares de vezesMas considere que, se você não for cuidadoso, poderá comprometer a segurança dessas funções, desfazendo o escape adicionado por elas ou adicionando conteúdo sem escape no final. Por esse motivo, os filtros são perigosos.
Preciso me preocupar com isso?
Não. Você só precisa se preocupar se tiver usado esses filtros, que por si só deveriam ter acionado grandes alarmes vermelhos de que algo em seu desenvolvimento deu muito errado.
As funções
esc_attr
eesc_html
são seguras de usar e escapam do conteúdo. Você tem uma obrigação ética e moral de usá-los se valorizar a segurança do seu códigoIsso significa que eu deveria usar
esc_html
?Não, fugir é definir expectativas. Se você está esperando um atributo, use
esc_attr
. Só porque é funcionalmente o mesmo no momento, não significa que não mudará no futuro com uma versão de segurançafonte
esc_html
escape deattribute_escape
filtro e filtro não ou vice-versa.