Magento 2 @escapeNotVerified

65

Eu vejo muitas ocorrências desse comentário /* @escapeNotVerified */nos arquivos de modelo do Magento2.
Tem algum significado especial?
Existe alguma utilidade para isso?

Exemplos:

Marius
fonte
25
Ei ... Por que o voto negativo? Não tenho permissão para fazer perguntas?
Marius

Respostas:

95

Essa tag é usada por testes estáticos. Qualquer saída potencialmente insegura deve ser marcada com @escapeNotVerifiedou @noEscapepara passar nos testes, o último significa que esse uso específico foi verificado e é seguro.

Nas versões futuras, todas as ocorrências de @escapeNotVerifiedserão verificadas e marcadas com @noEscapeou escapadas por um destes métodos:

  • \Magento\Framework\View\Element\AbstractBlock::escapeHtml
  • \Magento\Framework\View\Element\AbstractBlock::escapeUrl
  • \Magento\Framework\View\Element\AbstractBlock::escapeXssInUrl
  • \Magento\Framework\View\Element\AbstractBlock::escapeQuote

Observe também que algumas saídas são consideradas seguras e não devem ser marcadas com essas anotações:

  • Entre aspas simples
  • Entre aspas duplas, mas sem variáveis
  • Digite casting para bool, int
  • Chamadas de método que contêm 'html' em seus nomes, como getTitleHtml, também devem gerar HTML escapado
Alex Paliarush
fonte
3
Greats responder @Alex
Amit Bera
Bom Ans +1 @Alex :)
Rama Chandran M
Ajuda +1 @Alex
Nikunj Vadariya
4
No ritmo atual, a substituição será feita aproximadamente 2026: D
Fabian Schmengler
26

Eu o encontro nos devdocs do Magento2

Teste estático

Para melhorar a segurança contra injeções de XSS, um teste estático XssPhtmlTemplateTest.phpé adicionado ao dev \ tests \ static \ testsuite \ Magento \ Test \ Php.

Este teste estático encontra todas as chamadas de eco nos modelos PHTML e determina se é ou não escapado adequadamente.

Abrange os seguintes casos:

  • /* @noEscape */antes da saída. A saída não requer escape. O teste é verde.

  • /* @escapeNotVerified */antes da saída. O escape de saída não está marcado e deve ser verificado. O teste é verde.

Leia o Magento Docs em 2.0 ou 2.1

Conta
fonte