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.