Install
$ agentstack add skill-totvs-fluig-agent-skills-fluig-validate-security Open-source listing, not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Dangerous shell/eval execution.
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ● Dynamic code execution Used
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Validação de Segurança (Sanitização e Prevenção de XSS)
Esta skill sanitiza entradas e previne vulnerabilidades no frontend de customização Fluig; ela não duplica convenções — o arquivo de context/ é a fonte de verdade, referenciada abaixo.
Objetivo
Com responsabilidade única, sanitizar entradas e prevenir vulnerabilidades no frontend de customização Fluig (XSS, uso inseguro de innerHTML, eval()/new Function() com dados dinâmicos, interpolações sem escape em FreeMarker, uso de Mustache triple-stache {{{ }}} sem sanitização e chamadas REST internas), aplicando exclusivamente as APIs públicas e oficiais — preservando o comportamento do código.
Quando Usar
- Ao manipular entrada do usuário que será inserida no DOM, persistida ou exibida.
- Quando o código usa
innerHTMLcom conteúdo derivado de dados do usuário. - Quando há
eval()/new Function()recebendo dados dinâmicos. - Quando dados dinâmicos são interpolados em templates FreeMarker sem escape.
- Quando o código renderiza HTML via Mustache com triple-stache
{{{ }}}(ou{{& }}), que desabilita o escape automático. - Ao fazer chamadas REST internas, que devem usar
WCMAPI/FLUIGC.ajax(e nãofetch()/$.ajax()direto). - Antes de enviar (POST/PUT) ou ao receber/exibir (GET) dados do usuário.
Entradas Esperadas
| Entrada | Descrição | Obrigatória | |---------|-----------|-------------| | Código alvo | Trecho de frontend (JS de widget/Custom Element, FreeMarker) a validar/sanitizar | sim | | Origem dos dados do usuário | De onde vêm os dados não confiáveis (formulário, query string, resposta de API, parâmetros) | não |
Contexto de Referência (Fonte de Verdade)
Leia antes de executar — não reproduza o conteúdo aqui:
- [conventions.md](../../context/conventions.md) — seção Segurança (APIs públicas): distinção entre
WCMAPI.validateXSS(reduz a texto puro) eDOMPurify.sanitize(mantém HTML válido), depreciação deFLUIGC.utilities.preventXSS/decodeHTML,textContentvsinnerHTML, escape FreeMarker (${value?html},${value?js_string}), cautela com o triple-stache{{{ }}}do Mustache, proibição deeval()/new Function()e sanitização na entrada e na exibição. - [conventions.md](../../context/conventions.md) — seção Chamadas REST internas: usar
FLUIGC.ajax(ES6+) ouWCMAPI.Read/Create/Update/Delete(legado) em vez defetch()/$.ajax()direto para endpoints internos.
Regras Aplicáveis (Resumo Executivo)
Somente o mínimo para orientar a tarefa; o detalhe está no contexto:
- Tratar toda entrada do usuário como não confiável antes de qualquer uso no DOM ou persistência → ver
conventions.md. - Sanitizar com
DOMPurify.sanitizequando precisar manter HTML válido sem código malicioso → verconventions.md. - Sanitizar com
WCMAPI.validateXSSquando quiser converter o valor em texto puro (elimina XSS) → verconventions.md. - Preferir
textContentainnerHTML; só usarinnerHTMLcom conteúdo já sanitizado porDOMPurify.sanitize→ verconventions.md. - Escapar dados dinâmicos em FreeMarker:
${value?html}(e${value?js_string}para JS inline) → verconventions.md. - Usar Mustache triple-stache
{{{ }}}(ou{{& }}) apenas com conteúdo já sanitizado porDOMPurify, pois ele desabilita o escape automático → verconventions.md. - Nunca usar
eval()nemnew Function()com dados dinâmicos → verconventions.md. - Para REST interna, usar
FLUIGC.ajax/WCMAPIem vez defetch()/$.ajax()direto → verconventions.md. - Sanitizar tanto na entrada (POST/PUT) quanto na exibição (GET) → ver
conventions.md.
Procedimento
- Localizar os pontos onde entrada do usuário entra no DOM, na persistência ou na exibição (atribuições a
innerHTML, interpolações FreeMarker, chamadas dinâmicas). - Aplicar a sanitização adequada com a API pública correta:
DOMPurify.sanitizepara preservar HTML válido;WCMAPI.validateXSSpara reduzir a texto puro. - Substituir usos inseguros de
innerHTMLportextContent(quando texto basta) ou por conteúdo sanitizado comDOMPurify.sanitize. - Escapar dados dinâmicos em FreeMarker com
${value?html}(e${value?js_string}em contexto JS inline); ao usar Mustache, garantir que conteúdo em triple-stache{{{ }}}esteja previamente sanitizado porDOMPurify. - Remover
eval()/new Function()que recebam dados dinâmicos, substituindo por lógica explícita e segura. - Substituir chamadas REST internas feitas com
fetch()/$.ajax()direto porFLUIGC.ajax/WCMAPI(APIs públicas de cliente). - Garantir sanitização na entrada e na exibição dos dados do usuário.
- Validar o resultado com o checklist abaixo, confirmando que o comportamento foi preservado.
Saída Esperada
Código com:
- Entradas do usuário sanitizadas via APIs públicas (
DOMPurify.sanitizee/ouWCMAPI.validateXSS). - Sem vetores de XSS: sem
innerHTMLinseguro, semeval()/new Function()com dados dinâmicos e sem Mustache triple-stache{{{ }}}com conteúdo não sanitizado. - Dados dinâmicos escapados em FreeMarker.
- Chamadas REST internas via
FLUIGC.ajax/WCMAPI(semfetch()/$.ajax()direto). - Comportamento preservado em relação ao original.
Tudo em conformidade com context/conventions.md.
Exemplo de Uso
Antes (inseguro — input do usuário direto em innerHTML):
// ❌ vetor de XSS: userInput não confiável vai direto ao DOM como HTML
container.innerHTML = userInput;
Depois (texto puro com textContent, ou HTML sanitizado com DOMPurify.sanitize):
// ✅ quando basta texto: sem interpretação de HTML
container.textContent = userInput;
// ✅ quando HTML é necessário: sanitizar antes de inserir
container.innerHTML = DOMPurify.sanitize(userInput);
// ✅ quando o objetivo é eliminar qualquer HTML, reduzindo a texto puro
const safeText = WCMAPI.validateXSS(userInput);
Checklist de Validação
- [ ] Toda entrada do usuário é sanitizada com
DOMPurify.sanitizee/ouWCMAPI.validateXSS. - [ ] Não há
innerHTMLinseguro (usatextContentou conteúdo sanitizado). - [ ] Não há
eval()nemnew Function()com dados dinâmicos. - [ ] Dados dinâmicos em FreeMarker estão escapados (
${value?html}/${value?js_string}). - [ ] Mustache triple-stache
{{{ }}}(ou{{& }}) só é usado com conteúdo sanitizado porDOMPurify. - [ ] Chamadas REST internas usam
FLUIGC.ajax/WCMAPI, nãofetch()/$.ajax()direto. - [ ] Sanitização aplicada tanto na entrada (POST/PUT) quanto na exibição (GET).
- [ ] Comportamento do código preservado após a sanitização.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: totvs
- Source: totvs/fluig-agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.