Vedo molte ricorrenze di questo commento /* @escapeNotVerified */
nei file modello per Magento2.
Ha un significato speciale?
C'è qualche utilità per questo?
Esempi:
Vedo molte ricorrenze di questo commento /* @escapeNotVerified */
nei file modello per Magento2.
Ha un significato speciale?
C'è qualche utilità per questo?
Esempi:
Risposte:
Questo tag viene utilizzato dai test statici. Qualsiasi output potenzialmente non sicuro deve essere contrassegnato con uno @escapeNotVerified
o @noEscape
per superare i test, quest'ultimo significa che questo particolare utilizzo è stato verificato ed è sicuro.
Nelle versioni future tutte le occorrenze di @escapeNotVerified
saranno verificate e contrassegnate con @noEscape
o con escape con uno di questi metodi:
\Magento\Framework\View\Element\AbstractBlock::escapeHtml
\Magento\Framework\View\Element\AbstractBlock::escapeUrl
\Magento\Framework\View\Element\AbstractBlock::escapeXssInUrl
\Magento\Framework\View\Element\AbstractBlock::escapeQuote
Si noti inoltre che alcuni output sono considerati sicuri e non devono essere contrassegnati con tali annotazioni:
getTitleHtml
, dovrebbero generare HTML con escapeLo trovo nei devdocs di Magento2
Test statico
Per migliorare la sicurezza contro le iniezioni XSS, XssPhtmlTemplateTest.php
viene aggiunto un test statico a dev \ test \ static \ testsuite \ Magento \ Test \ Php.
Questo test statico trova tutte le chiamate echo nei template PHTML e determina se è stato correttamente evaso o meno.
Copre i seguenti casi:
/* @noEscape */
prima dell'uscita. L'output non richiede escape. Il test è verde.
/* @escapeNotVerified */
prima dell'uscita. L'uscita di uscita non è selezionata e deve essere verificata. Il test è verde.