Utilisation de différentes méthodes d'échappement

8

J'ai remarqué une classe vendor/magento/framework/Escaper.phpqui contient quelques méthodes de sécurité utiles utilisées à l'intérieur (principalement) des modèles. Certains d'entre eux sont assez courants ( escapeHtml()), mais certains sont difficiles à rencontrer.

  1. Quelle méthode et escapeXssInUrl()vraiment?
  2. En cas de méthode escapeJsQuote()- quel est l'endroit où ces citations peuvent être trouvées? Uniquement en ligne jsdans les modèles?
  3. Quelqu'un at-il une explication claire quand toutes les méthodes doivent être utilisées (exemples pratiques)?
  4. Quelle est la différence entre escapeUrl()et escapeXssInUrl()et si le second nous offre une meilleure sécurité, pourquoi ne pas toujours utiliser le second à la place en n'échappant que les caractères html?
  5. escapeQuote()devrait être utilisé par exemple pour faire écho à une variable dans une situation comme celle-ci <div value="<?php echo[ici?] $value?>"></div>?
Bartosz Kubicki
la source

Réponses:

3

La plupart des fonctions pour les mesures de sécurité contre les attaques XSS.

escapeXssInUrl()Méthode Supprimer javascript:, vbscript:, data:mots de url et utilisé comme

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

Magento 1 Vous pouvez échapper aux citations en javascript en utilisant $this->jsQuoteEscape ($item->getName());Mahento 2 vous pouvez faire de même en utilisantescapeJsQuote

escapeUrl() utilise en fait htmlspecialchars avec les paramètres recommandés pour échapper au HTML: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

Vous pouvez trouver plus d'informations dans la documentation officielle de Magento 2 .

Krishna ijjada
la source
Pouvez-vous faire la différence entre escapeUrl()et escapeXssInUr()l? Il convient de noter queThe 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

Il y a une entrée utile dans les DevDocs sur la sécurité des modèles: Mesures de sécurité contre les attaques XSS

Re escapeXssInUrl: La fonction escapeUrlappelle en escapeXssInUrlinterne plus escapeHtmlaprès. Magento utilise également en escapeUrlinterne.

Assurez-vous de vérifier les nouvelles fonctions d'échappement une fois Magento 2.2. est sorti car il y en aura de nouveaux à venir:

La prochaine version de Magento 2.2 rendra ces fonctions obsolètes.

Veuillez revenir sur cette page après la version 2.2 pour une documentation mise à jour sur les nouvelles fonctions d'échappement.

Et vous pourriez aussi bien être intéressé de consulter ma présentation à ce sujet ici: Gestion sécurisée des entrées et des sorties - Meet Magento Romania 2016

Anna Völkl
la source
en fait, j'ai regardé votre formation sur Mage Titans Italie et je voulais clarifier certaines informations et c'était l'une des raisons de la question :)! youtube.com/watch?v=TBSr5Esb-8M C'est ce que j'ai remarqué C'est ce que j'ai également remarqué escapeXssInUrl()- alors devrais-je utiliser escapeUrl()insted? «Règles de validation Eav Backedn» - Je suppose qu'elles sont simplement utilisées automatiquement et que je les utilise déjà? Ou est-ce que cela devrait les implémenter à des endroits où des entrées sont ajoutées?
Bartosz Kubicki
1
Je pense qu'il vaut mieux utiliser escapeUrlque escapeXssInUrlcomme cela s'appelle en interne: github.com/magento/magento2/blob/…
Anna Völkl
Je ne l'ai pas remarqué - c'est vrai!
Bartosz Kubicki