¿Existe un ayudante de Magento incorporado para escapar de los datos de plantilla de salida para evitar XSS?
¿O debería usar el PHP htmlspecialcharso las htmlentitiesfunciones?
¿Existe un ayudante de Magento incorporado para escapar de los datos de plantilla de salida para evitar XSS?
¿O debería usar el PHP htmlspecialcharso las htmlentitiesfunciones?
Respuestas:
Existen varios métodos de ayuda según el contexto. Todos están definidos en
Mage_Core_Helper_Abstractpero también enMage_Core_Block_Abstract, por lo que puede usarlos$this->...()en cada plantilla:escapeHtml(): En realidad, aprovechahtmlspecialcharslos parámetros recomendados para escapar de HTML:$result = htmlspecialchars($result, ENT_COMPAT, 'UTF-8', false);- además, puede especificar una lista blanca de etiquetas permitidas y llamar al método en una matriz para escapar de todos los elementos a la vez. Use esto para cualquier texto en línea.quoteEscape(): una versión más simple sin procesamiento de lista blanca y matriz, pero esta escapa a comillas simples y dobles, útil para texto dentro de un atributo HTML .jsQuoteEscape(): este se escapa de las comillas simples con una barra diagonal inversa. Se utiliza para escapar de literales de cadena en JavaScript. Pero esto no es seguro . (Ejemplo de @Xorax:)'test\\\'+alert("powned");//'. Es necesario escapar de las barras invertidas adicionales. Use en suquoteEscape()lugar!escapeUrl(): No sé por qué existe este método, es que no la codificación URL cadenas, es simplemente viejohtmlspecialchars()sin ningún parámetro. No lo uses Siempre.En una nota relacionada, existe la
urlEncode()que tampoco aplica la codificación URL, sino la base64 en su lugar ... No la use, si no sabe exactamente lo que necesita.Sí, el nombre es inconsistente. Una vez que todos esos nombres de métodos seguían el esquema,
somethingEscape()pero alguien decidió desaprobarhtmlEscape()yurlEscape()en favor de los nuevos métodos y se olvidó dequoteEscape()yjsQuoteEscape().fuente
Solo traduce
Siempre debe usar la función de traducción estándar
En una instancia de bloque
En cualquier otro lugar
Y úselo de la misma manera que lo haría
sprintfcon PHPP.ej.
O escapar
En una instancia de bloque
En cualquier otro lugar
Utilizando
Mage/Core/Helper/Abstract.phpP.ej.
fuente
Mage_Core_Block_Abstract::htmlEscape()está en desuso a partir de Magento v 1.4.0.0-rc1 yMage_Core_Block_Abstract::escapeHtml()debe utilizarse en su lugar.$this->__('Hello %s', '<script>alert("XSS!")</script>').Las clases
Mage_Core_Block_AbstractyMage_Core_Helper_Abstractambas usan la misma funciónMage_Core_Helper_Abstract::escapeHtmly su implementación usa internamente la función htmlspecialchars de PHP además de implementar alguna lógica adicional para matrices con contenido HTML.Se puede acceder a la función en todas las clases de bloque y ayuda a través de $ this y, dado que la función es pública, puede usarla a través de Mage :: helper ('core'), o alguna otra clase de ayuda, en cualquier otro lugar.
fuente
Para español convertido:
fuente