Um runtime universal que executa código escrito por qualquer um, no telefone de qualquer um, com acesso a pagamentos e identidade, não é primeiro um problema técnico: é um problema de confiança. Dez anos atrás a China encarou isso de frente: WeChat e Alipay abriram seus super-apps para milhões de desenvolvedores externos, e esse código agora roda em cerca de um bilhão de dispositivos, movendo dinheiro real. O fato de isso não ter se tornado uma manchete de vazamento diário é a verdadeira história.
A lição não é "construir uma sandbox". É construir uma pilha de confiança, onde cada camada elimina uma classe de desastre.
A pilha de confiança que a China de fato entregou
| Camada | O que as plataformas fazem | Risco que elimina | Portável para um runtime universal |
|---|---|---|---|
| 1. Isolamento de motor | A lógica roda em um motor JS separado (JSCore / V8), o render em um WebView; cada mini-programa tem seu próprio processo ou V8 Isolate | Código escapando para o host, roubo de dados entre apps | Sim — nível de motor |
| 2. Sem DOM/BOM cru | A camada lógica não tem document, window nem localStorage; a UI muda só por data binding | Injeção de UI pós-revisão, XSS, mutação silenciosa | Sim |
| 3. Lista branca de rede | Toda requisição passa pelo host e só HTTPS para domínios permitidos | Vazamento de dados para servidores do atacante, phishing | Sim — nível de política |
| 4. APIs em níveis + consentimento | Chamadas sensíveis (câmera, localização, contatos) passam por uma ponte do host e exigem autorização explícita | Coleta silenciosa de PII | Sim |
| 5. Pacote revisado | O código é servido de um CDN só após revisão da plataforma, assinado e versionado | Cargas adulteradas ou injetadas, abuso de supply chain | Parcial — precisa de pipeline de revisão de catálogo |
| 6. Monitoramento em runtime | Detecção de anomalias mais um canal de denúncia de usuários | Abuso pós-publicação | Sim — telemetria |
As quatro primeiras camadas são engenharia pura de runtime e transitam limpamente para qualquer host. A camada 5 depende de ter um catálogo — uma superfície de distribuição curada e revisada —, que é justamente a metade do "catálogo aberto" da CrossMiniApp. A camada 6 é disciplina operacional.
Por que isso importa para um runtime universal
A promessa da CrossMiniApp é "escreva uma vez, rode no rail de qualquer host". Essa promessa só vale algo se o runtime impuser a pilha de confiança. Um WebView simples que carrega código de terceiros não é um runtime: é uma superfície de ataque. O IP real é a execução sandboxeada: isolar o motor, proibir o DOM cru, forçar toda chamada de rede por uma política e trancar as APIs sensíveis atrás de um consentimento.
Há um segundo nível: esta é a razão pela qual um catálogo aberto funciona. Justamente porque o runtime restringe o que o código pode fazer, você pode se dar ao luxo de deixar muitos desenvolvedores publicarem. A restrição no runtime é o que torna a abertura no catálogo segura.
A regra
Ao executar código de outra pessoa, a segurança não é uma função que você adiciona depois. É a fundação que você entrega no dia um — isolamento de motor, sem DOM cru, listas brancas de rede, APIs em níveis, código revisado, monitoramento em runtime. As plataformas chinesas provaram que escala para um bilhão de usuários. Um runtime universal também pode.