Não sei exatamente o dia em que ocorreu (primeiros relatos surgiram em 16/07/18), mas a VTEX atualizou a versão do jQuery (print: https://snag.gy/e7BmiG.jpg ) em produção e isso esta gerando erros em algumas lojas, então se você estiver vendo uma mensagem de erro como esta:
muito provavelmente o problema da sua loja é decorrente dessa atualização.
Antes de abrir o chamado, eu analisei os cenários e levantei a hipótese do problema ser essa atualização, com isso em mãos, abri chamado. A resposta que tive foi confirmando que eles haviam feito a mudança, que isso era inadiável e que não existem chances de voltar atrás pois essa atualização corrige uma vulnerabilidade de XSS no jQuery.
Bom, a VTEX atualizou o principal script JS de toda sua plataforma, para todas as lojas sem comunicar nada, sem lançar um período de testes ou algo assim. Ela simplesmente foi lá e fez pois era urgente.
Se você jogar no Google `jQuery XSS` verá que existem resultados desde 2013 (ou talvez antes) então isso não é nenhuma novidade e não justifica não existir um prazo para adequação das lojas.
Eu tentei achar alguns exemplos de falhas de segurança com XSS mas nao encontrei nada que não pudesse ser explorado mesmo após a atualização da VTEX, se alguém achar por favor comente aqui para que eu possa testar.
Não criei esse post para pedir que eles voltem o script já que não estão dispostos a isso, criei para que possamos trocar ideia sobre possíveis soluções e também para deixar compartilhada a solução assim que a encontrar.
Aaaaa, no caso de acharem que isso só ocorre com scripts customizadas por agências podem testar o controle nativo `$product.ButtonBuyModal`
@Carlos Santos a atualização foi necessária para atender a algumas exigências de segurança solicitadas para manter o certificado da PCI Compilance. Esta foi uma necessidade que surgiu apenas agora. Logo foi atualizado as pressas.
Em função disto não foi notificado a tempo, realmente concordo que poderia ter uma comunicação mais evidente. Teremos cuidado para tratar disto em atualizações de grande impacto.
Em relação ao controlador padrão, irei verificar para lançarmos uma correção.
@Mateus Augusto Saggin Estamos com o mesmo problema em nosso principal cliente de Ecommerce. Precisamos de um prazo para que seja feita essa correção.
Como reportador pelo Mateus a Vtex esta trabalhando na atualização da funcionalidade nativa e provavelmente farão futuros ajustes em outras funcionalidades que apresentarem problemas.
Porém de qualquer modo, eu estava procurando uma alternativa para solucionar esse problema e consegui montar um script que complementa o funcionamento do jQuery e evita que alguns scripts parem de funcionar por conta dessa atualização.
Quero ressaltar que esse script não burlar ou desabilita a validação colocada pela Vtex, ele apenas complementa.
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
(function () {
var myJquery = $.fn.init;
$.fn.extend({ init: function (text, b, c) {
if (typeof text === "string")
text = text.trim();
return new myJquery(text, b, c);
} });
})();
Quem quiser utilizar fique a vontade, basta adicionar no <head/>
Lembrando que isso é uma solução BETA, então USE POR SUA CONTA E RISCO!
@Carlos Santos boa solução. Isso poderá ser utilizado para os demais scripts personalizados.
@Claudio Alcantara , @Nathan Prestes e @Fabio Santos de Albuquerque
Quanto ao script de funcionalidade padrão já subiu em stable e realizamos um purge do cache, leva um tempo mas acredito que em 30 minutos já invalidade o cache e já esteja com a versão atualizada.