Existe um auxiliar Magento embutido para escapar dos dados do modelo emitido e impedir o XSS?
Ou devo apenas usar o PHP htmlspecialchars
ou htmlentities
funções?
Existe um auxiliar Magento embutido para escapar dos dados do modelo emitido e impedir o XSS?
Ou devo apenas usar o PHP htmlspecialchars
ou htmlentities
funções?
Respostas:
Existem vários métodos auxiliares, dependendo do contexto. Todos são definidos em,
Mage_Core_Helper_Abstract
mas também emMage_Core_Block_Abstract
, para que você possa usá-los$this->...()
em todos os modelos:escapeHtml()
: Na verdade, utilizahtmlspecialchars
os parâmetros recomendados para escapar do HTML:$result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);
- além disso, você pode especificar uma lista de permissões de tags permitidas e chamar o método em uma matriz para escapar de todos os elementos de uma só vez. Use isso para qualquer texto embutido.quoteEscape()
: uma versão mais simples sem lista de permissões e processamento de matriz, mas esta escapa aspas simples e aspas duplas, útil para texto dentro de um atributo HTML .jsQuoteEscape()
: este escapa aspas simples com uma barra invertida. É usado para escapar literais de string em JavaScript. Mas isso não é seguro . (Exemplo de @Xorax:)'test\\\'+alert("powned");//'
. É necessário um escape adicional de barras invertidas. Use emquoteEscape()
vez disso!escapeUrl()
: Não sei por que esse método existe, não é uma string de codificação de URL, é simplesmente antigo,htmlspecialchars()
sem nenhum parâmetro. Não use. Sempre.Em uma nota relacionada, existe o
urlEncode()
que também não se aplica à codificação de URL, mas ao invés do base64 ... Não o use, se você não souber exatamente o que precisa.Sim, a nomeação é inconsistente. Uma vez que todos esses nomes de métodos estavam seguindo o esquema
somethingEscape()
, alguém decidiu reprovarhtmlEscape()
e aurlEscape()
favor dos novos métodos e esqueceu-se dequoteEscape()
ejsQuoteEscape()
.fonte
Apenas traduza
Você deve sempre usar a função de conversão padrão
Em uma instância de bloco
Em qualquer outro lugar
E use da mesma maneira que você usaria
sprintf
com PHPPor exemplo.
Ou escapar
Em uma instância de bloco
Em qualquer outro lugar
Usando
Mage/Core/Helper/Abstract.php
Por exemplo.
fonte
Mage_Core_Block_Abstract::htmlEscape()
está obsoleto no Magento v 1.4.0.0-rc1 eMage_Core_Block_Abstract::escapeHtml()
deve ser usado.$this->__('Hello %s', '<script>alert("XSS!")</script>')
.Classes
Mage_Core_Block_Abstract
eMage_Core_Helper_Abstract
ambas usam a mesma funçãoMage_Core_Helper_Abstract::escapeHtml
e sua implementação usa internamente a função PHP htmlspecialchars, além de implementar alguma lógica adicional para matrizes com conteúdo HTML.A função pode ser acessada em todas as classes de bloco e auxiliar através de $ this e, como a função é pública, você pode usá-la através do Mage :: helper ('core') ou de alguma outra classe auxiliar, em qualquer outro lugar.
fonte
Para espanhol converter:
fonte