Magento 2 @escapeNotVerified

65

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:

Marius
quelle
25
Hey ... Warum die Gegenstimme? Ich darf keine Fragen stellen?
Marius

Antworten:

95

Dieses Tag wird von statischen Tests verwendet. Jede potenziell unsichere Ausgabe muss entweder mit @escapeNotVerifiedoder 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 @noEscapemit 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:

  • In einfachen Anführungszeichen eingeschlossen
  • In doppelten Anführungszeichen, aber ohne Variablen
  • Typumwandlung nach bool, int
  • Von Methodenaufrufen, deren Namen 'html' enthalten getTitleHtml, wird ebenfalls erwartet, dass sie mit Escapezeichen versehenes HTML ausgeben
Alex Paliarush
quelle
3
Große antworten @Alex
Amit Bera
Gute Ans +1 @Alex :)
Rama Chandran M
Es hilft +1 @Alex
Nikunj Vadariya
4
Nach dem derzeitigen Tempo wird der Ersatz ungefähr 2026 erfolgen: D
Fabian Schmengler
26

Ich finde es in devdocs von Magento2

Statischer Test

Um die Sicherheit gegen XSS-Injektionen zu verbessern, XssPhtmlTemplateTest.phpwird 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.

Lesen Sie die Magento-Dokumentation unter 2.0 oder 2.1

Rechnung
quelle