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>?

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 .


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.