Ich sehe viele Vorkommen dieses Kommentars /* @escapeNotVerified */
in den Vorlagendateien für Magento2.
Hat es eine besondere Bedeutung?
Gibt es eine Verwendung dafür?
Beispiele:
Ich sehe viele Vorkommen dieses Kommentars /* @escapeNotVerified */
in den Vorlagendateien für Magento2.
Hat es eine besondere Bedeutung?
Gibt es eine Verwendung dafür?
Beispiele:
Antworten:
Dieses Tag wird von statischen Tests verwendet. Jede potenziell unsichere Ausgabe muss entweder mit @escapeNotVerified
oder gekennzeichnet werden @noEscape
, um Tests zu bestehen. Letzteres bedeutet, dass diese bestimmte Verwendung überprüft wurde und sicher ist.
In zukünftigen Versionen werden alle Vorkommen von @escapeNotVerified
überprüft und entweder @noEscape
mit einer der folgenden Methoden markiert oder mit einem Escapezeichen versehen:
\Magento\Framework\View\Element\AbstractBlock::escapeHtml
\Magento\Framework\View\Element\AbstractBlock::escapeUrl
\Magento\Framework\View\Element\AbstractBlock::escapeXssInUrl
\Magento\Framework\View\Element\AbstractBlock::escapeQuote
Beachten Sie auch, dass einige Ausgaben als sicher gelten und nicht mit solchen Anmerkungen versehen werden sollten:
getTitleHtml
, wird ebenfalls erwartet, dass sie mit Escapezeichen versehenes HTML ausgebenIch finde es in devdocs von Magento2
Statischer Test
Um die Sicherheit gegen XSS-Injektionen zu verbessern, XssPhtmlTemplateTest.php
wird dev \ tests \ static \ testsuite \ Magento \ Test \ Php ein statischer Test hinzugefügt.
Dieser statische Test findet alle Echoaufrufe in PHTML-Templates und stellt fest, ob er ordnungsgemäß maskiert ist oder nicht.
Es deckt folgende Fälle ab:
/* @noEscape */
vor der Ausgabe. Die Ausgabe erfordert kein Escapezeichen. Test ist grün.
/* @escapeNotVerified */
vor der Ausgabe. Die Ausgabe-Escape-Funktion wird nicht überprüft und sollte überprüft werden. Test ist grün.