VTEX atualizou o jQuery e isso esta quebrando scripts nativos e personalizados nas lojas

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:

error 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`

Tenho algumas lojas que estou tendo que alterar o código para deixar de usar esse controle e usar um próprio criado por nós.

Infelizmente esse problema afetou a todos... depois eu vou por o script no git.

Estávamos com uma demanda dessa e não sabíamos a causa, bom saber.

Obrigado Carlos e infelizmente é uma pena não sermos notificados com antecedência dessa mudança :)

Agora vamos lá corrigir diversas lojas por conta de uma má gestão da VTEX.

@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.

@Claudio Alcantara​ já encontrei e corrigi o problema, estamos subindo versão em breve já deverá estar em produçã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​ Testei sua solução usando o Override de Script do Chrome, e realmente funciona.

A duvida fica, em saber por qual canal a VTEX vai nos avisar sobre a resolução do problema, para que possamos remover essa parcial.

@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.

@Mateus Augusto Saggin​ , eu testei agora o controle e o erro persiste o mesmo.

@Fabio Santos de Albuquerque​ pode me passar a URL da loja?

@Mateus Augusto Saggin​ , não sei tem relação, mas o controle de quickview também não está funcional de uns dias p cá. Será pela mesma razão?

Permanecemos com o mesmo problema.

@Mateus Augusto Saggin​ Obrigado pela intervenção, por aqui ficou okay.

@Nathan Prestes​ @Fabio Santos de Albuquerque​ URLs por gentileza.

@Mateus Augusto Saggin​ boa tarde!

Essa atualização já está em beta para eu fazer os teste na minha loja?

@Mateus Augusto Saggin​ o meu caso já ficou ok, podia ser um cache demorado.

@Mateus Augusto Saggin​ este endpoint também precisa de ajustes: https://www.boticario.com.br/frete/calcula/2004805?shippinCep=04578000&quantity=1

Carlos, aqui não apresenta nenhum erro.

Já foi ajustado?

@Nathan Prestes​ antes de postar eu dei uma olhada e ainda estava com problemas, qual loja que vc viu funcionando?