Utilizzando diversi metodi di escape


8

Ho notato una classe vendor/magento/framework/Escaper.phpche contiene alcuni utili metodi di sicurezza utilizzati all'interno (principalmente) dei modelli. Alcuni sono abbastanza comuni ( escapeHtml()), ma alcuni sono difficili da incontrare.

  1. Quale metodo e escapeXssInUrl()davvero?
  2. In caso di metodo escapeJsQuote(): qual è il luogo in cui è possibile trovare queste citazioni? Solo in linea jsnei modelli?
  3. Qualcuno ha qualche spiegazione chiara quando tutti i metodi dovrebbero essere usati (esempi pratici)?
  4. Qual è la differenza tra escapeUrl()e escapeXssInUrl()e se il secondo ci garantisce una maggiore sicurezza, perché non usare sempre il secondo invece di sfuggire solo ai caratteri html?
  5. escapeQuote()dovrebbe essere usato ad esempio per riecheggiare una variabile in una situazione come questa <div value="<?php echo[qui?] $value?>"></div>?

Risposte:


3

La maggior parte delle funzioni per misure di sicurezza contro gli attacchi XSS.

escapeXssInUrl()Metodo Rimuovere javascript:, vbscript:, data:parole da url e utilizzato come

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

Magento 1 Puoi sfuggire alle virgolette in javascript usando $this->jsQuoteEscape ($item->getName());Mahento 2 puoi fare lo stesso usandoescapeJsQuote

escapeUrl() sfrutta effettivamente htmlspecialchars con i parametri consigliati per sfuggire all'HTML: $result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);

Puoi trovare ulteriori informazioni nella documentazione ufficiale di Magento 2 .


Puoi dire la differenza tra escapeUrl()e escapeXssInUr()l? Vale la pena notare cheThe 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 il

3

Vi è una voce utile in DevDocs sulla sicurezza dei modelli: misure di sicurezza contro gli attacchi XSS

Ri escapeXssInUrl: La funzione escapeUrlchiama escapeXssInUrlinternamente più escapeHtmlsuccessivamente. Anche Magento utilizza escapeUrlinternamente.

Assicurati di controllare le nuove funzioni di escape una volta Magento 2.2. esce perché ce ne saranno di nuovi in ​​arrivo:

La prossima versione di Magento 2.2 deprecherà queste funzioni.

Ricontrolla questa pagina dopo la versione 2.2 per la documentazione aggiornata sulle nuove funzioni di escape.

E potresti anche essere interessato a dare un'occhiata alla mia presentazione su questo qui: Gestione sicura di input e output - Meet Magento Romania 2016


in realtà ho visto il tuo allenamento su Mage Titans Italia e volevo chiarire alcune informazioni e questo è stato uno dei motivi della domanda :)! youtube.com/watch?v=TBSr5Esb-8M Questo è quello che ho notato È quello che ho notato anche su escapeXssInUrl()- quindi dovrei usare escapeUrl()insted? "Regole di convalida di Eav Backedn" - Immagino che vengano usate automaticamente e le sto già utilizzando? O dovrebbe essere implementato in questi punti?
Bartosz Kubicki,

1
Penso che sia meglio usare escapeUrlrispetto a escapeXssInUrlcome viene chiamato internamente: github.com/magento/magento2/blob/…
Anna Völkl

Non l'ho notato, è vero!
Bartosz Kubicki,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.