Usando diferentes métodos de escape

8

Notei uma classe vendor/magento/framework/Escaper.phpque contém alguns métodos úteis de segurança usados ​​dentro (principalmente) de modelos. Alguns deles são bastante comuns ( escapeHtml()), mas alguns são difíceis de encontrar.

  1. Que método e escapeXssInUrl()realmente faz?
  2. Em caso de método escapeJsQuote()- qual é o local onde essas citações podem ser encontradas? Apenas embutido jsnos modelos?
  3. Alguém tem alguma explicação clara sobre quando todos os métodos devem ser usados ​​(exemplos práticos)?
  4. Qual é a diferença entre escapeUrl()e escapeXssInUrl()se o segundo nos concede uma segurança melhor, por que nem sempre o segundo é usado para escapar apenas de caracteres html?
  5. escapeQuote()deve ser usado, por exemplo, para ecoar alguma variável em situação como esta <div value="<?php echo[aqui?] $value?>"></div>?
Bartosz Kubicki
fonte

Respostas:

3

A maioria das funções de medidas de segurança contra ataques XSS.

escapeXssInUrl()Método Remove javascript:, vbscript:, data:palavras de url e utilizado como

echo $block->escapeXssInUrl($block->getUrl()) ?>"><?php echo $block->getAnchorTextHtml()

Magento 1 Você pode escapar das aspas em javascript usando o $this->jsQuoteEscape ($item->getName());Mahento 2, você pode fazer o mesmo usandoescapeJsQuote

escapeUrl() realmente utiliza htmlspecialchars com os parâmetros recomendados para escapar do HTML: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

Você pode encontrar mais informações na documentação oficial do Magento 2 .

Krishna ijjada
fonte
Você pode dizer a diferença entre escapeUrl()e escapeXssInUr()l? Vale a pena notar queThe upcoming release of Magento 2.2 will deprecate these functions. Please check back on this page after the 2.2 release for updated documentation on new escape functions.
Bartosz Kubicki 30/10
3

Há uma entrada útil nos DevDocs sobre segurança de modelo: Medidas de segurança contra ataques XSS

Re escapeXssInUrl: A função escapeUrlchama escapeXssInUrlinternamente mais escapeHtmldepois. Magento também usa escapeUrlinternamente.

Certifique-se de verificar as novas funções de escape uma vez Magento 2.2. é lançado, pois haverá novos chegando:

A próxima versão do Magento 2.2 descontinuará essas funções.

Verifique novamente esta página após a versão 2.2 para obter documentação atualizada sobre novas funções de escape.

E você pode também estar interessado em conferir minha apresentação sobre isso aqui: Manuseio seguro de entradas e saídas - Meet Magento Romania 2016

Anna Völkl
fonte
na verdade, eu assisti ao seu treinamento em Mage Titans Italy e queria esclarecer algumas informações, e esse foi um dos motivos da pergunta :)! youtube.com/watch?v=TBSr5Esb-8M Foi o que eu notei Foi o que eu também notei escapeXssInUrl()- então devo usar escapeUrl()insted? 'Regras de validação de Eav Backedn' - acho que elas são apenas usadas automaticamente e eu já as estou usando? Ou isso deve ser implementado nos locais em que as entradas são adicionadas?
Bartosz Kubicki
11
Eu acho que é melhor usar escapeUrldo escapeXssInUrlque isso é chamado internamente: github.com/magento/magento2/blob/… #
Anna Völkl
Eu não notei isso - isso mesmo!
Bartosz Kubicki