Verwenden verschiedener Escape-Methoden

8

Ich habe eine Klasse bemerkt, vendor/magento/framework/Escaper.phpdie einige nützliche Sicherheitsmethoden enthält, die in (hauptsächlich) Vorlagen verwendet werden. Einige von ihnen sind ziemlich häufig ( escapeHtml()), aber einige von ihnen sind schwer zu begegnen.

  1. Welche Methode und escapeXssInUrl()wirklich?
  2. Im Falle einer Methode escapeJsQuote()- an welcher Stelle finden sich diese Zitate? Nur inline jsin Vorlagen?
  3. Hat jemand eine klare Erklärung, wann alle Methoden angewendet werden sollten (praktische Beispiele)?
  4. Was ist ein Unterschied zwischen escapeUrl()und escapeXssInUrl()und wenn der zweite uns eine bessere Sicherheit bietet, warum nicht immer den zweiten verwenden, anstatt nur HTML-Zeichen zu entkommen?
  5. escapeQuote()sollte zum Beispiel verwendet werden, um eine Variable in einer solchen Situation wiederzugeben <div value="<?php echo[hier?] $value?>"></div>?
Bartosz Kubicki
quelle

Antworten:

3

Die meisten Funktionen für Sicherheitsmaßnahmen gegen XSS-Angriffe.

escapeXssInUrl()Methode Remove javascript:, vbscript:, data:Wörter aus URL und verwendet wie

echo $block->escapeXssInUrl($block->getUrl()) ?>"><?php echo $block->getAnchorTextHtml()

Magento 1 Mit $this->jsQuoteEscape ($item->getName());Mahento 2 können Sie den Anführungszeichen in Javascript entkommen. Mit Mahento 2 können Sie dasselbe tunescapeJsQuote

escapeUrl() nutzt tatsächlich htmlspecialchars mit den empfohlenen Parametern, um HTML zu umgehen: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

Weitere Informationen finden Sie in der offiziellen Dokumentation zu Magento 2 .

Krishna ijjada
quelle
Kannst du den Unterschied zwischen escapeUrl()und erkennen escapeXssInUr()l? Es ist erwähnenswert, dassThe 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
3

In den DevDocs gibt es einen hilfreichen Eintrag zur Vorlagensicherheit: Sicherheitsmaßnahmen gegen XSS-Angriffe

Betreff escapeXssInUrl: Die Funktion escapeUrlruft escapeXssInUrlintern plus escapeHtmldanach auf. Auch Magento verwendet escapeUrlintern.

Stellen Sie sicher, dass Sie die neuen Escape-Funktionen nach Magento 2.2 überprüfen. ist raus, da neue kommen werden:

In der kommenden Version von Magento 2.2 werden diese Funktionen nicht mehr unterstützt.

Bitte besuchen Sie diese Seite nach der Version 2.2 erneut, um eine aktualisierte Dokumentation zu neuen Escape-Funktionen zu erhalten.

Und Sie könnten genauso gut daran interessiert sein, meine Präsentation dazu hier zu lesen : Sichere Eingabe- und Ausgabebehandlung - Treffen Sie Magento Romania 2016

Anna Völkl
quelle
Eigentlich habe ich dein Training auf Mage Titans Italy gesehen und wollte einige Informationen klären und das war einer der Gründe für die Frage :)! youtube.com/watch?v=TBSr5Esb-8M Das ist mir aufgefallen. Das ist mir auch aufgefallen escapeXssInUrl()- sollte ich also escapeUrl()insted verwenden? 'Eav Backedn Validierungsregeln' - Ich denke, sie werden nur automatisch verwendet und ich verwende sie bereits? Oder sollte das sie an Stellen implementieren, an denen Eingaben hinzugefügt werden?
Bartosz Kubicki
1
Ich denke, es ist besser zu verwenden, escapeUrlals escapeXssInUrldies intern genannt wird: github.com/magento/magento2/blob/…
Anna Völkl
Das habe ich nicht bemerkt - das ist richtig!
Bartosz Kubicki